不使用 ROR 指令的逻辑循环?

Logical Rotate without using ROR instruction?

我正在尝试编写 ASM,它使用逻辑右移来移动一个字节而不破坏末尾的字节,而是将它们旋转到前面。本质上,我试图在不专门使用该指令的情况下模拟 ROR 指令。

我知道右移指令会自动将剩余的 space 替换为 0,但是是否有可能更改该值的方法?

.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

在这种情况下,代码一直运行到 "e" 一直向右移动。

您可以手动将那些底部的位放回顶部,例如

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