我正在学习 MIPS 汇编语言 exercise website
在练习 2.3 中,我想知道以下说明有何不同
add $t1, $t1, $t0 # $t1 = &A[i-j]
lw $t1, 0($t1) # $t1 = A[i-j]
具体来说,&A[i-j] 和 A[i-j] 有什么区别?我知道 A 是一个数组,但为什么有一个“&”符号,另一个没有?谢谢
答案 0 :(得分:2)
他们试图用 C 符号来解释指令。
A[n] 是数组 A 第 n 个元素中的值
&A[n] 是数组A的第n个元素的地址
引用代码的重点不是要调出两条指令之间的“差异”;它是展示如何获取数组元素的内容。
第一条指令通过将 $t0 的内容添加到 $t1 来计算元素的地址(并了解如何产生 &A[i-j] 需要事先知道 $t0 和 $t1 中的内容)。
第二条指令是实际加载字的,使用第一条指令计算的地址。