我正在尝试将值100分配给内存地址8004.当我尝试下面的简单说明时,似乎我总是错过了16位的标记(我想我可能正在读这个模拟器错了,我没有&#39 ; t使用它很多)。这种差异的原因是什么?我的第一个猜测是$ 0寄存器不在0位,实际上是16位,但这只是猜测。
li $24, 100
sw $24, 8004($0)
模拟器截图:
答案 0 :(得分:4)
您的模拟器以12个字节的行显示内存,每行以标记的地址开头。
因此您的屏幕截图显示存储在1f44 + 3或十进制地址8007的0x64(十进制100)。显然您的MIPS模拟器位于big-endian mode(因为MIPS可以在任一模式下运行):32位整数的LSB最终在第4个字节。在little-endian模式下,0x00000064
值的低字节将为0x1f44
,接下来的3个字节将为零。
根据https://en.wikipedia.org/wiki/MIPS_instruction_set#Integer,有字节,半字和字存储指令。如果您只想影响您提供地址的单字节,则应使用sb
。