我是汇编语言的初学者,所以我希望任何给我答案的人都可以解释得更具体。
问题是从 C 语言转换为汇编语言。
C代码是:
while(save[i] == k)
i += 1;
i
and k
are in $s3
and $s5
and and 数组save[]
的基数在$s6
答案就在图中。
我的误解是,为什么$S3 multiple 2^2(==4)
,然后存储到$t1
。
我在stackoverflow上查看了类似的问题,有人说“你应该把基数和索引加在一起,记住要按4来缩放字长。”
但是因为我是初学者,所以我还是一头雾水。
例如,
一个周期后,
i == 2
(in$S3
)。然后重新开始,
i == 2
乘以$S3
4,我们在这里得到 8,然后写入$t1
.
那么有一个问题,为什么是8?我认为我们需要的save[2]
不是save[8]
.
我想我可能会对价值和地址感到困惑。
另一个问题是:这些寄存器有多少$S1
位$t1
?我认为是 32 位,所以应该是 1 个字。