移位量应该是立即数还是存储在寄存器中的值?两者都有效吗?
我有不同的网站告诉我不同的事情,我很困惑。
根据我的研究,应该像这样使用 sll(逻辑左移)指令:
sll $d, $t, h
这使得 $d = $t 向左移动了 h 次。
有人告诉我 h 应该是立即数,但我想知道是否可以将寄存器用作第三个参数,并将该寄存器内的值用作移位量。这也行吗?
你是对的。
sll
具体而言,它是一个R 格式指令,其中仅使用两个寄存器 rd 和 rs(目标和源),而 shamt 字段是立即值(常量)。
还有另一条指令sllv
使用第三个寄存器,您可以在其中指定按变量移位(寄存器)。