Arrays RISC-V中遍历阵列的不同方法
我目前正在通过RISC-V学习基本汇编语言,对循环数组的有效方法有点困惑 如果给定a0作为指向整数数组的指针,这是否足以移动到下一个元素Arrays RISC-V中遍历阵列的不同方法,arrays,assembly,riscv,Arrays,Assembly,Riscv,我目前正在通过RISC-V学习基本汇编语言,对循环数组的有效方法有点困惑 如果给定a0作为指向整数数组的指针,这是否足以移动到下一个元素 lw s0,0(a0)#数组指针存储在s0中 lw s0 4(s0)#每次要移动到下一个元素时都调用此命令 如果我想修改该位置元素的实际值,我可以简单地使用sw吗 我还知道,使用slli/srli也可以让您进行转换,有人能解释一下这个概念吗 谢谢大家! 遍历数组(包含n个元素)的基本模式如下: 将阵列起始地址存储在寄存器X中 使用shift和add指令存储
- lw s0,0(a0)#数组指针存储在s0中
- lw s0 4(s0)#每次要移动到下一个元素时都调用此命令
谢谢大家! 遍历数组(包含n个元素)的基本模式如下:
Y=X+n*4
)lw
以从X中存在的地址加载单词),并对该数组元素执行某些操作add
指令按字长(例如4字节)递增X关于修改:修改寄存器中加载的数组元素,然后可以使用
sw
将新的寄存器值存储回数组。让我们将您的想法带到逻辑的极端:如果数组有1000个元素长怎么办?是否要编写不同的lw
来访问每个元素?很不切实际,不是吗?相反,您希望增加指针变量本身,并使用循环。不,lw s0,4(s0)
不增加s0,而是取消引用4+s0
。你可以用它来浏览一个链表,其中。next
成员是第二个单词。移位实际上是一个不同的主题,最好放在不同的问题中。虽然使用查询位移位的web搜索应该能够提供足够的资料来解释这个概念。