0

我正在做一个任务,我试图在 C++ 和 MIPS 之间进行转换,我有一个问题要求我转换 B[8] = A[i-3] i、A 和 B 存储在注册表中分别为 $s0、$s4 和 $s5。我坚持的部分是如何将 i-3 存储到 A[] 中。有可能做这样的事情吗?:

lw $t0, 32($s5)
addi $t1, $s0, -3
lw $t2, $t1($s4)
sw $t0, 0($t2)

我对 MIPS 还是有点陌生​​,主要是想弄清楚你是否可以以这种方式使用 lw。任何帮助,将不胜感激。

4

1 回答 1

2

您不能lw使用寄存器作为索引来调用。假设寄存器中的值是正确的,您需要分两步执行:

add $t1, $t1, $s4
lw $t2, 0($t1)

不要忘记,在访问每个元素为 4 个字节长的字数组时,您需要将索引乘以 4。

于 2013-04-02T00:08:12.777 回答