MIPS中的数组地址

时间:2018-02-13 02:36:56

标签: assembly mips

在Patterson和Hennessy(第5版)的第2.14节(第141页)中,作者写道,如果将array[i]设置为0,我们必须先得到它的地址。首先将i乘以4得到字节地址:loop1: sll $t1, $t0, 2"。

我不明白为什么我们必须乘以4才能得到字节地址。可能是因为1个字= 32位,即4个字节?

1 个答案:

答案 0 :(得分:0)

是的,内存[芯片]可以通过单个字节寻址,因此第一个字占用四个地址:0,1,2,3。每个是8位= 1个字节,它们一起形成32位值= 1个字(在MIPS世界中word = 32位)。它们的顺序可以配置为IIRC,但通常假定为little-endian,因此在加载整个word时,四个字节0x12 0x34 0x56 0x78形成一个字值0x78563412

因此,要连续阅读单词,您必须将地址调整为+ -4。如果你有字节数组,那么地址可以调整+ -1,半字占用2个字节,所以+ -2寻址就可以了。