是否在不使用ROR指令的情况下进行逻辑旋转?

时间:2018-10-26 16:20:37

标签: assembly mips bit-shift

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

我知道右移指令会自动将剩余的空间替换为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”一直向右移动为止。

1 个答案:

答案 0 :(得分:3)

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

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