RISC-V中的旋转位

时间:2019-09-16 01:26:37

标签: bit-manipulation riscv

嘿,所以我对RISC-V有点陌生。

我的运动问题之一是:

  

将值0x0000000000000123右旋转4位。预期结果为0x3000000000000012,即所有十六进制数字向右移动一个位置,而最右边的十六进制数字向右移动*

到目前为止,我对逻辑操作学到了一些知识:andi, or, and xori。在之前的练习中,我学习了add, addi, sub, slli, srli, srai

我从开始:

addi x6, 0x, 0x123

但是,我被困在这里。我的教科书并没有真正正确地描述事物,因此非常感谢您的协助!

1 个答案:

答案 0 :(得分:1)

这就是我最终要做的:

addi x30, x0, 0x123
andi x29, x30, 0x00f //masking all, but the right most hexadecimal digit
slli x6, x29, 60 //shifting this digit all the way to the left (rotating)
srli x7, x30, 4 //shifting the original value 4 bits right
add x5, x6, x7 //adding the two regs