【问题标题】:What exactly does a MIPS lw instruction do?MIPS lw 指令到底是做什么的?
【发布时间】:2021-02-22 15:30:45
【问题描述】:

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

lw %t5, 100($t8)

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

lw Reg.Dest, Offset(Reg.Source)

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

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

【问题讨论】:

  • 它将$t8 + 100的值加载到寄存器$t5
  • %t5 是语法错误。我猜你的意思是$t5

标签: assembly mips instructions


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    lw Reg.Dest, Offset(Reg.Source)
    

    让我们把它翻译成你的代码。

    lw $t5, 100($t8)
    

    这里有加载字 (lw) 指令,带有 Reg.Dest = $t5Offset = 100Reg.Source = $t8

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

    【讨论】:

      【解决方案3】:

      lw 是 I-Type 指令:

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

      它在 RTL (register transfer level/logic) 中有以下规范:

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

      在哪里

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

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

      有关所有说明,请参阅MIPS green sheet

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

      【讨论】:

        猜你喜欢
        • 2021-10-31
        • 2011-04-28
        • 1970-01-01
        • 2019-08-07
        • 1970-01-01
        • 2020-10-23
        • 2016-07-28
        • 1970-01-01
        • 2014-11-20
        相关资源
        最近更新 更多