【问题标题】:What is the correct syntax of MIPS instruction sll?MIPS 指令 sll 的正确语法是什么?
【发布时间】:2015-10-22 23:08:05
【问题描述】:

移位量应该是立即数还是存储在寄存器中的值?两者都有效吗?

我有不同的网站告诉我不同​​的事情,我很困惑。

根据我的研究,应该像这样使用 sll(逻辑左移)指令:

  sll $d, $t, h

这使得 $d = $t 向左移动了 h 次。

有人告诉我 h 应该是立即数,但我想知道是否可以将寄存器用作第三个参数,并将该寄存器内的值用作移位量。这也行吗?

【问题讨论】:

    标签: mips sll


    【解决方案1】:

    你是对的。

    sll 的具体之处在于它是一条R-format 指令,其中仅使用了两个寄存器,rd 和 rs(目标和源),而 shamt 字段是立即值(常量)。

    还有另一条指令sllv 使用第三个寄存器,您可以在其中指定按变量移位(寄存器)。

    【讨论】:

    • 注意:sslv 是 MIPS32r2 指令。 MIPS 架构的 MIPS32r2 版本于 2002 年推出,因此尚未得到 SPIM 和 MARS 等常见教育工具的支持。
    【解决方案2】:

    让我清楚一点 MIPS 32 位中的左移逻辑具有以下语法:

    SLL destination, Target, Shift amount(Should be immediate value)

    在 8086 中,如果我们希望移位量大于 1,我们必须使用寄存器来存储移位量的值!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 2021-03-03
      • 1970-01-01
      相关资源
      最近更新 更多