繁体   English   中英

MIPS lw 指令到底是做什么的?

[英]What exactly does a MIPS lw instruction do?

帮助! 我是组装新手,我正在尝试找出这个命令的作用

lw %t5, 100($t8)

我也明白左边是目的地,右边是源头

lw Reg.Dest, Offset(Reg.Source)

我相信它将数据从一个地方写入另一个地方,但我不了解细节。

有人可以向我解释命令或指出正确的方向吗?

lw是“加载字”的简写,这就是指令的作用——它将 memory 中的一个数据字加载(读取)到寄存器中。

因此,第一个操作数(目标)是一个寄存器,而第二个操作数指定 memory 中的一个位置。 位置(地址)是通过将偏移量添加到寄存器的内容来计算的。

您提供的以下定义是正确的。

lw Reg.Dest, Offset(Reg.Source)

让我们将其转换为您的代码。

lw $t5, 100($t8)

这里我们有 Load Word (lw) 指令,其中Reg.Dest = $t5Offset = 100Reg.Source = $t8

总而言之,这就是说将地址$t8 + 100处的 4 个字节加载到寄存器 $t5

lw是 I-Type 指令:

  +--------+----+----+-----------+
I | opcode | rs | rt | immediate |   (instruction fields)
  +--------+----+----+-----------+
       6     5     5      16         (bit length)

它在 RTL(寄存器传输级别/逻辑)中具有以下规范:

R[rt] = M[R[rs]+SignExtImm]

在哪里

SignExtImm = { 16{immediate[15]}, immediate }

汇编语法是lw rt, immediate(rs)其中rt , rsimmediate (rs) 分别是寄存器名称和一个小的 integer 常量。

有关所有说明,请参阅MIPS 绿皮书

请注意, lw操作码通常还支持多个伪指令 forms,这些伪指令扩展为多个实际 MIPS 指令。 要查看它们的作用,我们可以检查扩展的各个指令。 一种形式对于加载全局变量特别有用: lw rt, globalDataLabel 在这种形式中,没有提供基址寄存器 ( rs )。 它扩展为 2 条指令,完成将全局字加载到目标寄存器中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM