Memory 为什么在MIPS中内存地址会增加4?

Memory 为什么在MIPS中内存地址会增加4?,memory,mips,Memory,Mips,如果某个对象存储在0x1001 0000,则下一个对象存储在0x1001 0004。如果我是正确的,32位体系结构中的内存块每个都是32位。那么0x1001 0002会指向32位的后半部分吗?您似乎自己已经回答了这个问题!32位构成4个字节,因此,如果您要将所有元素按相同大小推送到堆栈,则下一个项目将比下一个项目提前4个字节。首先,MIPS体系结构中的内存地址不会增加4。MIPS使用字节寻址,因此您可以从内存中寻址任何字节(例如,请参见lb和lbu读取单个字节,lh和lhu读取半个字) 事实上,

如果某个对象存储在0x1001 0000,则下一个对象存储在0x1001 0004。如果我是正确的,32位体系结构中的内存块每个都是32位。那么0x1001 0002会指向32位的后半部分吗?

您似乎自己已经回答了这个问题!32位构成4个字节,因此,如果您要将所有元素按相同大小推送到堆栈,则下一个项目将比下一个项目提前4个字节。

首先,MIPS体系结构中的内存地址不会增加4。MIPS使用字节寻址,因此您可以从内存中寻址任何字节(例如,请参见
lb
lbu
读取单个字节,
lh
lhu
读取半个字)

事实上,如果您读取32位长度的单词(4字节,
lw
),那么两个连续的单词将彼此相距4字节。在本例中,您将在第一个单词的地址上添加4,以获得下一个单词的地址

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


在您的示例中,如果第一个字存储在0x10010000中,那么下一个字将存储在0x10010004中,当然,前半部分/后半部分将存储在0x1001000和0x1001002中(顺序将取决于体系结构的类型)。

内存地址将增加4位,而不是4位。