Логическое вращение без использования инструкции ROR? - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь написать ASM, который использует логическое смещение вправо для смещения байта, не уничтожая байты в конце, а вместо этого поворачивая их вперед. По сути, я пытаюсь эмулировать инструкцию ROR без специального использования этой инструкции.

Я знаю, что правильная инструкция сдвига автоматически заменяет оставшиеся пробелы нулями, но есть ли способ потенциально изменить это значение?

.data
InArr: .word 0xe0000000
OutArr: .word 0

.text
.global main

main:
    lw $s2, InArr
    lw $s3, OutArr

loop:
    #ror $s2, $s2, 4
    srl $s2, $s2, 4
    sw $s2, InArr
    bne $s2, $s3, loop

    syscall

В этом случае код выполняется до тех пор, пока «е» не сместится вправо.

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете поместить эти нижние биты обратно в верхнюю часть вручную, например,

sll $t0, $s2, 28
srl $s2, $s2, 4
or $s2, $s2, $t0
...