移位金额应该是立即值,还是存储在寄存器中的值?两者都有效吗?
我有不同的网站告诉我不同的事情,我很困惑。
根据我的研究,sll(shift left logical)指令应该像这样使用:
sll $d, $t, h
这使得$ d = $ t左移h次。
我被告知h应该是一个立即值,但我想知道寄存器是否可以用作第三个参数,并且该寄存器中的值用作移位量。那会有用吗?
答案 0 :(得分:3)
你是对的。
sll
是特定的,因为它是R-format指令,其中只使用了两个寄存器,rd和rs(目标和源),并且shamt字段是立即值(常量)。
还有另一条指令sllv
使用第三个寄存器,您可以在其中指定按变量(寄存器)移位。
答案 1 :(得分:0)
让我清楚一点,MIPS 32位中的左移逻辑具有以下语法:
<强> SLL destination, Target, Shift amount(Should be immediate value) 强>
如果在8086中如果我们想要移位量超过1,我们必须使用寄存器来存储移位量的值!