在Patterson和Hennessy(第5版)的第2.14节(第141页)中,作者写道,如果将array[i]
设置为0,我们必须先得到它的地址。首先将i
乘以4得到字节地址:loop1: sll $t1, $t0, 2
"。
我不明白为什么我们必须乘以4才能得到字节地址。可能是因为1个字= 32位,即4个字节?
答案 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寻址就可以了。