关于 MIPS 中的加载字节指令

About load byte instruction in MIPS

我想了解MIPS load byte (lb)指令的处理过程。我发现了要求我通过给定 byte@7=0x82, byte@8=0x6A.

填充变量的问题

我想我在第一个和第二个问题中理解了。但是我真的不明白第三个问题为什么答案是FFFFFFF82。如果你们能告诉我这件事,我将非常高兴。谢谢你。

当您使用 lb 指令将单个字节加载到 32 位寄存器时,MIPS 架构会自动执行 sign extension。对于第一个示例,加载的值 (0x64) 是正数,因此寄存器包含 0x0000006a。但对于最后一个示例,该值为负数 (0x82 == -126),因此寄存器将被符号扩展为 0xffffff82(-126 表示为 32 位有符号值)。

请注意,lbu 指令是 lb 的无符号版本 - 它不执行符号扩展,因此结果加载的高位字节将始终为零。