首页/指令库/位反转字节
BREV8

RISC-V BREV8 指令详解

指令手册I-type

字节内位反转(Zbkb)。

指令语法

brev8 rd, rs1
操作数说明
rd:接收每个字节内位序反转后的 XLEN 位结果。
rs1:提供按 8 位字节分组的 XLEN 位源值。
bits 31..20 固定为 011010000111;这是 BREV8 编码选择子,不是汇编语法中的立即数。
Zbkb位操作

指令行为说明

BREV8 按字节反转位序:将源操作数(rs1)分为8位字节,每个字节内的bit位序反转(bit 0↔bit 7, bit 1↔bit 6, ...),结果写入目的寄存器(rd)。属于Zbkb标量位操作扩展。

BREV8 指令解析与执行动画

仅展示官方定义的编码、条件和架构可见结果,不表示微架构实现。

brev8 a0, a1
执行环境
x[a0] <- 0x80C4A2E691D5B3F7
编码字段
31..20
imm[11:0]
011010000111
19..15
rs1
01011
14..12
funct3
101
11..7
rd
01010
6..0
opcode
0010011
编码字段识别指令。
0x0123456789ABCDEF -> 0x80C4A2E691D5B3F7 (每个字节独立反转)
x[a0] <- 0x80C4A2E691D5B3F7
尚未提交架构状态。

快速理解与检索要点

BREV8 是 Zbkb 密码位操作指令;页面按官方 B 扩展的操作定义校对。

适用于 RV32/RV64 时按 XLEN 宽度操作。
该类指令重排位/字节字段,不访问内存。

常见使用场景

字节内位序重排

结合 «brev8 a0, a1 # Reverse bits in each byte of a1» 等实际代码理解该场景。

逐字节 bit 反转

结合 «brev8 a0, a1 # Reverse bits in each byte of a1» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认汇编操作数仅为 rd, rs1;bits 31..20 的 011010000111 是固定编码选择子,不是立即数。
  • 确认目标平台实现 Zbkb,并按当前 XLEN 读取 rs1 和写回 rd。
语义检查
  • 确认每个 8 位字节独立反转 bit[7:0],字节之间不交换位置。
  • 确认这是纯寄存器位排列,不访问内存,也不把固定编码位当作运行时输入。

容易混淆 / 常见误区

仅反转每个字节内位,字节顺序不变
RV32操作低32位,RV64操作低64位

常见问题

BREV8 是否访问内存?

不访问。它只在整数寄存器内重排每个字节的位字段。

BREV8 属于哪个扩展?

它属于 Zbkb 密码位操作扩展。