说明是:
rol $t0, $t1, n
rolv $t0, $t1, $t2
n:1bit-31bit
这是上述说明的正确翻译吗?
srl $t1, $s1, 1
sll $t2, $s1, 31
or $s2, $t1, $t2 #combine_words
答案 0 :(得分:0)
对于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