我正在尝试在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。任何帮助将不胜感激。
答案 0 :(得分:2)
您不能使用寄存器作为索引来调用lw
。假设寄存器中的值是正确的,您需要分两步执行:
add $t1, $t1, $s4
lw $t2, 0($t1)
不要忘记,当访问每个元素长度为4个字节的字数组时,需要将索引乘以4。