Инструкция:
rol $t0, $t1, n
rolv $t0, $t1, $t2
п: 1 бит- 31 бит
Это правильный перевод вышеуказанной инструкции?
srl $t1, $s1, 1
sll $t2, $s1, 31
or $s2, $t1, $t2 #combine_words
Инструкция:
rol $t0, $t1, n
rolv $t0, $t1, $t2
п: 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