rol код MIPS псевдоинструкции

Инструкция:

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

п: 1 бит- 31 бит

Это правильный перевод вышеуказанной инструкции?

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

person penny    schedule 10.04.2018    source источник


Ответы (1)


Для 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
person gusbro    schedule 10.04.2018