我是 MIPS 的新手,不明白这里发生了什么:
假设字数组A按此顺序存储0,1,2,3,4,5,6,7,8,9。假设 A 的起始地址在 $s0 中。在以下说明之后,这个数组的值是多少?
addi $t0, $s0, 32
lw $t1, 0($t0)
sw $t1, 4($t0)
(a) 0,1,2,3,4,5,6,7,8,9
(b) 0,1,2,3,4,5,6,7,9,9
(c) 0,1,2,3,4,5,6,7,8,8
(d) None of the above.
答案是“c”,但我不明白为什么。这是我的思考过程:
第一行代码:
由于这是一个整数数组,因此将地址 $s0 加上 32 并将其赋予 $t0 意味着将 A[8] 的地址赋予 $t0。A[8] 因为每个整数需要 4 个字节,因此将 0 加到 $s0 将得到 A[0] 的地址,将 4 加到 $s0 将得到 A[1] 的地址,依此类推......
第二行代码:
0($t0) 引用 $t0 中的第一个元素(我不知道那是什么)并将其加载到寄存器 $t1。
第三行代码:
$t1 的地址存储在内存中到 $t0 的第一个元素,用 4($t0) 表示。
同样,以上是我的思考过程,很可能是错误的