我正在做一个家庭作业,我得到了这个信息:
$ s6 是数组基地址 A 的位置, $ s0 是 f的值的位置(未指定)。
它希望我将一些指令转换为C语句。这是我的问题,因为如果这个问题得到解答,我可以很容易地解决这个问题的其余部分:
添加$ t0,$ s6,$ s0
这是说$t0 = (the base address of array A) + f
还是说$t0 = A[0+f]
?
因为如果A的基地址是0x04000000并且我使用addi将4添加到该基地址,产生0x04000004,并将该值赋给t0,我所说的是t0 = A [1](假设我存储整数。
但由于我不知道f的值,我不确定如何在C中表示这个,因为我知道我正在修改索引,但我不知道多少。是否更准确地说(根据上述说明):
$t0 = A[f/4]
我对这一切都是新手。希望我证明我已经做了一些研究,试图解决这个问题。
由于
OSFTW
答案 0 :(得分:1)
此说明中没有解除引用:
add $t0, $s6, $s0
就像说
t0 = s6 + s0;
在类似C的伪代码中。或者为你的例子:
t0 = (char *)A + f;
要从A中获取值,它看起来像:
lw $t1, 0($t0)
完成上一条add
指令后,$t0
指向数组中的正确位置。