首页/指令库/加载半精度浮点数
FLH

RISC-V FLH 指令详解

指令手册I-type

从内存加载 2 字节半精度浮点值。

指令语法

flh rd, offset(rs1)
操作数说明
rd:目标浮点寄存器。
rs1:整数基址寄存器。
offset:12 位有符号字节偏移,与 rs1 相加形成有效地址。
ZfhZfhmin浮点加载

指令编码

31..20
imm[11:0]
19..15
rs1
14..12
funct3
11..7
rd
6..0
opcode

FLH 使用 opcode 0000111(0x07)、funct3 001。rs1 字段选择整数基址寄存器,立即数字段提供字节偏移,rd 字段选择目标浮点寄存器。

格式: I-type
opcode: 0000111 (0x07)
funct3: 001 (0x1)

指令行为说明

FLH 使用 x[rs1] 加 12 位有符号 offset 形成有效地址,从内存加载 2 字节半精度浮点编码到 f[rd]。自然对齐访问具有规范定义的原子性保证;非对齐行为取决于执行环境。

快速理解与检索要点

FLH 是浮点寄存器和内存之间的半精度格式访存指令。地址计算和整数 load/store 一样使用基址加 12 位有符号字节偏移。

访问宽度是 2 字节;是否需要严格对齐以及非对齐处理取决于执行环境。
加载结果在浮点寄存器中按该格式表示,并在更宽 FLEN 中 NaN-box。

常见使用场景

浮点访存

结合 «flh f10, 0(x11) ; load half-precision from [x11]» 等实际代码理解该场景。

数据加载与存储

结合 «flh f10, 0(x11) ; load half-precision from [x11]» 等实际代码理解该场景。

使用前检查清单

语法检查
  • rd:目标浮点寄存器。
  • rs1:整数基址寄存器。
  • offset:12 位有符号字节偏移,与 rs1 相加形成有效地址。
语义检查
  • 确认 offset 是字节偏移,不是元素索引。
  • 确认目标地址的自然对齐和执行环境的非对齐访问规则。

容易混淆 / 常见误区

offset 是 12 位有符号字节偏移,不是元素索引。
自然对齐时才有规范的原子性保证;非对齐支持由执行环境定义。
加载窄格式到更宽 FLEN 寄存器时遵守 NaN-boxing 规则。

常见问题

FLH 的 offset 单位是什么?

offset 是字节偏移,由 12 位有符号立即数字段编码。

FLH 会转换浮点格式吗?

不会。访存指令搬移该格式的编码位;格式转换应使用 FCVT。