MIPS 指令 sll 的正确语法是什么?
What is the correct syntax of MIPS instruction sll?
移位量应该是立即数,还是存储在寄存器中的值?两者都有效吗?
不同的网站告诉我不同的事情,我很困惑。
根据我的研究,sll(逻辑左移)指令应该这样使用:
sll $d, $t, h
这使得 $d = $t 左移 h 次。
有人告诉我h应该是立即数,但我想知道是否可以将寄存器用作第三个参数,并将该寄存器中的值用作移位量。那也行吗?
你是对的。
sll
的特殊之处在于它是一个 R-format 指令,其中只使用了两个寄存器,rd 和 rs(目标和源),并且 shamt 字段是一个立即值(一个常数).
还有另一个指令sllv
,它使用第三个寄存器,您可以在其中指定按变量(寄存器)移位。
让我澄清一点 MIPS 32 位中逻辑左移具有以下语法:
SLL destination, Target, Shift amount(Should be immediate value)
在8086中,如果我们想要移位量大于1,我们必须使用寄存器来存储移位量的值!
移位量应该是立即数,还是存储在寄存器中的值?两者都有效吗?
不同的网站告诉我不同的事情,我很困惑。
根据我的研究,sll(逻辑左移)指令应该这样使用:
sll $d, $t, h
这使得 $d = $t 左移 h 次。
有人告诉我h应该是立即数,但我想知道是否可以将寄存器用作第三个参数,并将该寄存器中的值用作移位量。那也行吗?
你是对的。
sll
的特殊之处在于它是一个 R-format 指令,其中只使用了两个寄存器,rd 和 rs(目标和源),并且 shamt 字段是一个立即值(一个常数).
还有另一个指令sllv
,它使用第三个寄存器,您可以在其中指定按变量(寄存器)移位。
让我澄清一点 MIPS 32 位中逻辑左移具有以下语法:
SLL destination, Target, Shift amount(Should be immediate value)
在8086中,如果我们想要移位量大于1,我们必须使用寄存器来存储移位量的值!