首页 > 解决方案 > 在 RISC-V 中遍历数组的不同方法

问题描述

我目前正在通过 RISC-V 学习基本的汇编语言,我对遍历数组的有效方法有点困惑。

如果给定 a0 作为指向整数数组的指针,这足以移动到下一个元素吗?

如果我也想修改该位置元素的实际值,我可以简单地使用 sw 吗?

我也知道使用 slli/srli 也可以让你转变,谁能解释这个概念?

谢谢!

标签: arraysassemblyriscv

解决方案


遍历数组(有 n 个元素)的基本模式是这样的:

  1. 将数组起始地址存储在寄存器 X 中
  2. Y = X + n * 4使用移位和添加指令将地址存储在寄存器 Y(例如)中最后一个元素之后
  3. 取消引用 X(即lw从 X 中存在的地址加载单词)并对该数组元素执行某些操作
  4. add使用指令将 X 增加字长(例如 4 个字节)
  5. 跳转到步骤 3。如果 X 仍然小于 Y
  6. 遍历完成

关于修改:您修改寄存器中加载的数组元素,然后您可以将新的寄存器值存储回您的数组中sw


推荐阅读