为什么MIPS中的内存地址增加4?

时间:2012-05-14 02:40:59

标签: memory mips

如果某些内容存储在0x1001 0000,则下一个存储在0x1001 0004.如果我是正确的,32位架构中的内存块各为32位。那么0x1001 0002会指向32位的后半部分吗?

2 个答案:

答案 0 :(得分:9)

首先,MIPS架构中的内存地址不会增加4. MIPS使用字节寻址,因此您可以从内存中寻址任何字节(例如,请参阅lblbu来读取单个字节,lhlhu读半字)。

事实是,如果你读取32位长度的字(4个字节,lw),那么两个连续的字将彼此相距4个字节。在这种情况下,您可以在第一个单词的地址中加4,以获取下一个单词的地址。

除此之外,如果您阅读单词,则必须将它们以4的倍数对齐,否则您将获得对齐异常。

在您的示例中,如果第一个字存储在0x10010000中,那么下一个字将在0x10010004中,当然前半部分/后半部分将在0x1001000和0x1001002中(排序将取决于endianness建筑)。

答案 1 :(得分:0)

你似乎已经自己回答了这个问题! 32位产生4个字节,所以如果你是推送到堆栈,其中所有元素被推送为相同的大小,每个下一个项目将在下一个项目之前(或之前)4个字节。