rol伪指令MIPS代码

rol pseudo-instruction MIPS code

指令是:

rol $t0, $t1, n
rolv $t0, $t1, $t2

n: 1 位 - 31 位

以上说明的翻译是否正确?

srl $t1, $s1, 1
sll $t2, $s1, 31
or $s2, $t1, $t2 #combine_words

对于rol $t0, $t1, n,我会使用$at作为临时寄存器。

假设你想将4位二进制数字向左旋转:

   srl $at, $t1, 28  # 32-4 = 28
   sll $t0, $t1, 4
   or $t0, $t0, $at

对于 rolv $t0, $t1, $t2 我会发出($t2 保存要旋转的位数):

   sllv $t0, $t1, $t2
   subu $at, $zero, $t2
   addiu $at, $at, 32    # $at = 32-$t2
   srlv $at, $t1, $at
   or $t0, $t0, $at