数组如何存储在寄存器文件中?

时间:2013-02-25 20:31:19

标签: arrays mips

我正在查看32x32寄存器文件,$ s0- $ s7,$ t0- $ t9,$ 0,$ a0- $ a3,$ v0- $ v1,$ gp,$ fp,$ ra和在$

我的问题是如何将数组存储在这些寄存器文件中?它们不只是每个32位宽吗?

例如,给定的数组A的基址是$ s3,如果我要给出指令来得到A [8]:

lw $t0, 32($s3)

如何检索数据?

1 个答案:

答案 0 :(得分:1)

通过指针(C人非常熟悉的东西)进行数组访问,因此寄存器只保存数组的基址。然后,您将8 * 4 = 32个字节添加到该基址,以获取第8个元素的地址,最后取消引用该指针(这意味着查看该地址的内容)以获取值(使用lw指令)。

您显示的说明是此C代码的翻译:

t0 = *(s3 + 8)  // same as s3[8]