REV8 会访问内存吗?
不会。它只读写整数寄存器;任何内存访问都必须由单独的 load/store 指令完成。
字节反转(大小端转换/bswap)
REV8 使用 opcode 0010011(0x13)、funct3 101、funct7 0110100。rs1 字段选择源寄存器,12 位立即数提供第二操作数,rd 选择目标寄存器。
字节反转:将rs的字节顺序完全颠倒。RV32下rev8(0xAABBCCDD)=0xDDCCBBAA。REV8(RV32)和REV8(RV64)的funct7不同。属于Zbb和Zbkb。
REV8 是 B/Zbb 指令,按 XLEN 反转字节顺序。页面内容按官方 B 扩展语义校对,重点区分 XLEN、W 后缀、.uw 后缀和按位/循环操作的边界。
结合 «rev8 x10, x11 ; byte-reverse x11 (bswap)» 等实际代码理解该场景。
不会。它只读写整数寄存器;任何内存访问都必须由单独的 load/store 指令完成。
除 W 后缀先形成 32 位结果再符号扩展、.uw 先提取 32 位无符号操作数外,结果按 XLEN 写入 rd。