我是 MIPS 的新手,很难理解这段代码的含义...... 其中 $s6 是数组 A 的开头:
addi $t0,$s6,4
我不确定这是否意味着 $t0 = A[4] -或者- 如果这意味着 $t0 = A[0] + 4,则取 A[0] 中的值并添加 4,然后将其保存回 A[0]
任何帮助将不胜感激。
提前谢谢您!!
最佳答案
行:
addi $t0,$s6,4
其中$s6是数组的基数,获取寄存器$s6的内容,加4并将结果放入$t0。因此,如果$s6中的地址是0x00400000,那么在addi指令之后,$t0将包含0x00400004。
addi 指令将立即数(即整数值)添加到源寄存器,并将结果存储在目标寄存器中,在本例中为 $t0。
所以如果 $s6 是 A[0],那么 $t0 就变成 A[1],假设你有一个整数数组。如果你有一个字符数组,即字符串,那么 $t0 就变成 A[3]。 $t0 不保存这些数组索引处的值,它保存这些数组索引的地址,因为那是 $s6 最初保存的。
关于arrays - MIPS addi 指令到数组基数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10472452/