首页/指令库/无符号最小值
MINU

RISC-V MINU 指令详解

指令手册R-type

返回 rs1 和 rs2 按无符号比较的最小值。

指令语法

minu rd, rs1, rs2
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
BZbb位操作整数运算

指令编码

31..25
funct7
24..20
rs2
19..15
rs1
14..12
funct3
11..7
rd
6..0
opcode

MINU 使用 opcode 0110011(0x33)、funct3 101、funct7 0000101。rs1 和 rs2 字段选择两个源寄存器,rd 字段选择目标寄存器。

格式: R-type
opcode: 0110011 (0x33)
funct3: 101 (0x5)
funct7: 0000101 (0x05)

指令行为说明

MINU 是 Zbb 整数最值指令,比较 x[rs1] 与 x[rs2] 后把按无符号关系较小的原始 XLEN 位值写入 rd。它不设置条件码,也不分支。

快速理解与检索要点

MINU 常用于无分支 clamp、min/max 选择和比较后保留原值的场景。它直接返回被选中的 rs1 或 rs2 位模式,而不是比较结果位。

带 U 的形式按无符号整数排序;不带 U 的形式按二进制补码有符号整数排序。
Zbb 最值指令不会读取或写入浮点状态,也不会设置整数条件码。

常见使用场景

整数比较

结合 «minu x10, x11, x12 ; x10 = unsigned_min(x11, x12)» 等实际代码理解该场景。

无分支选择

结合 «minu x10, x11, x12 ; x10 = unsigned_min(x11, x12)» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 R-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

MINU 使用无符号比较;有符号场景使用 MIN。
结果是被选中的原始寄存器值,不是布尔 0/1。
该指令不设置条件码;RISC-V 没有隐式整数标志寄存器。

常见问题

MINU 返回 0/1 吗?

不。它返回 rs1 或 rs2 中按比较规则被选中的原始 XLEN 位值。

MINU 和 min 怎么选?

数据应按无符号大小解释时用带 U 的形式;按有符号二进制补码解释时用不带 U 的形式。