MIPS:&A[i-j] 和 A[i-j] 之间的区别

时间:2021-06-26 20:06:51

标签: mips

我正在学习 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 是一个数组,但为什么有一个“&”符号,另一个没有?谢谢

1 个答案:

答案 0 :(得分:2)

他们试图用 C 符号来解释指令。

A[n] 是数组 A 第 n 个元素中的值

&A[n] 是数组A的第n个元素的地址

引用代码的重点不是要调出两条指令之间的“差异”;它是展示如何获取数组元素的内容。

第一条指令通过将 $t0 的内容添加到 $t1 来计算元素的地址(并了解如何产生 &A[i-j] 需要事先知道 $t0 和 $t1 中的内容)。

第二条指令是实际加载字的,使用第一条指令计算的地址。

相关问题