lbu MIPS指令如何工作

时间:2017-03-30 19:43:50

标签: mips

快速提问我的课堂评论问题:

lbu $R2, 24($R2)

因此问题要求我们在执行上述指令后显示寄存器$ R2的值。

给出了两件事(所有值都是十进制的):

$R2 = 12

内存地址: 36 = -18, 32 = 99, 28 = 177, 24 = -14

我对lbu指令的确切工作方式感到有点迷失。我非常确定该指令将根据提供给$ R2的偏移加载最右边的字节,而不是对它进行符号扩展但是这究竟是什么意思?我有几个答案,只是不完全确定。

如果指令只是lb vs lbu

,那么同一指令的表现如何?

1 个答案:

答案 0 :(得分:1)

  

并且没有签名扩展它但这究竟是什么意思?

符号扩展:该字的其余位都设置为加载实体的最高位的值。

例如:0x80 => 0xFFFFFF80,和0x7F => 0x0000007F。

零扩展:字的其余位都设置为零。

例如:0x80 => 0x00000080和0x7F => 0x0000007F。

在您的示例中,24($R2)处的字节为-18(0xEE),假设采用小端布局。符号扩展时为0xFFFFFFEE,零扩展时为0x000000EE。