如果某些内容存储在 0x1001 0000 处,则下一个内容将存储在 0x1001 0004 处。如果我是正确的,32 位架构中的内存块每个都是 32 位。那么0x1001 0002会指向32位的后半部分吗?
首先,MIPS 架构中的内存地址不会增加 4。MIPS 使用字节寻址,因此您可以对内存中的任何字节进行寻址(参见例如lb
and lbu
读取单个字节,lh
and lhu
读半个字)。
事实是,如果您读取 32 位长度的字(4 个字节,lw
),那么两个连续的字将彼此相距 4 个字节。在这种情况下,您可以将第一个字的地址加 4 以获得下一个字的地址。
除此之外,如果你读取单词,你必须以 4 的倍数对齐它们,否则你会得到对齐异常。
在您的示例中,如果第一个单词存储在 0x10010000 中,那么下一个单词将存储在 0x10010004 中,当然前半部分/后半部分将存储在 0x1001000 和 0x1001002 中(顺序取决于字节顺序 http://en.wikipedia.org/wiki/Endianness的架构)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)