这个MIPS代码行的偏移量是多少:lw $ s0,4($ t0)?

时间:2016-04-07 08:44:17

标签: assembly mips cpu-registers cpu-architecture

不确定偏移是否意味着将指令从“加载字”中提取并存储一行(4字节)。程序计数器进入寄存器$ s0,4($ t0)。这如何在记忆中起作用?如果可能,请提供示例。

1 个答案:

答案 0 :(得分:3)

LW和SW的功能可以在MIPS指令集中读取,Michael已经说过了。

但是,为了快速完成,我仍然在这里提供答案。 LW代表加载字。它从一个存储该值的地址向目标寄存器(rt)加载一个32位字值。

LW rt, offset(base)

让我们举一个简单的例子:

LUI T0, 0x8033
LW T1, 0x2550(T0)

上面的代码现在将加载位于地址的32位字值:

0x80332550

LUI中的值是地址的上半部分,而提供的偏移量0x2550是下半部分。现在,MIPS只是从0x80332550加载32位值。

让我们说0x80332550包含以下值:

0x80332550: 25 66 99 88 77 14 22 66

在LW指令之后,T1现在将包含值0x25669988。 (如果在big-endian上,在little-endian上它将是0x88996625)

SW与LW几乎相同,只是它将32位值存储到提供的地址而不是加载它。在这种情况下,rt寄存器作为价值持有者行事。