【发布时间】:2020-02-27 09:48:18
【问题描述】:
我目前正在通过 RISC-V 学习基本的汇编语言,但我对遍历数组的有效方法有点困惑。
如果给定 a0 作为指向整数数组的指针,这是否足以移动到下一个元素?
- lw s0, 0(a0) #指向数组的指针存储在s0中
- lw s0 4(s0) #每次要移动到下一个元素时调用这个?
如果我也想修改该位置元素的实际值,我可以简单地使用 sw 吗?
我也知道使用 slli/srli 也可以让你转变,谁能解释一下这个概念?
谢谢!
【问题讨论】:
-
让我们把你的想法推向逻辑极端:如果数组有一千个元素长怎么办?你打算写一个不同的
lw来访问每个元素吗?相当不切实际,不是吗?相反,您想增加指针变量本身,并使用循环。 -
不,
lw s0, 4(s0)不会增加 s0,它会取消引用4+s0。您可以使用它来遍历 linked list,其中.next成员是第二个单词。 -
换档确实是一个不同的话题,最好放在不同的问题上。尽管使用查询
bit shifting进行网络搜索应该会找到足够的材料来解释这个概念。