Bwo*_*ods -1 assembly mips cpu-architecture cpu-registers
不确定偏移量是否意味着将指令提取并存储在距“加载字”程序计数器一行(4 字节)的地方到寄存器 $s0,4($t0) 中。这在内存中是如何工作的?如果可能,请提供示例。
LW 和 SW 的功能可以在 MIPS 指令集中读取,迈克尔已经说过。
但是,为了快速起见,我仍然在这里提供答案。LW 代表加载字。它从存储该值的地址将 32 位字值加载到目标寄存器 (rt)。
LW rt, offset(base)
Run Code Online (Sandbox Code Playgroud)
让我们举一个简单的例子:
LUI T0, 0x8033
LW T1, 0x2550(T0)
Run Code Online (Sandbox Code Playgroud)
上面的代码现在将加载位于地址的 32 位字值:
0x80332550
Run Code Online (Sandbox Code Playgroud)
LUI 中的值是地址的上半部分,而提供的偏移量 0x2550 是下半部分。现在 MIPS 只需从 0x80332550 加载 32 位值。
假设 0x80332550 包含以下值:
0x80332550: 25 66 99 88 77 14 22 66
Run Code Online (Sandbox Code Playgroud)
在 LW 指令之后,T1 现在将包含值 0x25669988。(如果在 big-endian 上,在 little-endian 上它将是 0x88996625)
SW 与 LW 几乎相同,只是它将 32 位值存储到提供的地址而不是加载它。在这种情况下,rt 寄存器充当值持有者。
| 归档时间: |
|
| 查看次数: |
10388 次 |
| 最近记录: |