1

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

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

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

  sll $d, $t, h

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

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

4

2 回答 2

4

你是对的。

sll具体而言,它是一个R 格式指令,其中仅使用两个寄存器 rd 和 rs(目标和源),而 shamt 字段是立即值(常量)。

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

于 2015-10-22T23:22:27.357 回答
0

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

SLL 目的地、目标、班次金额(应为即时值)

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

于 2017-02-26T18:33:47.977 回答