FMV.X.H

RISC-V FMV.X.H 指令详解

指令手册R-type

把半精度浮点编码按位复制到整数寄存器。

指令语法

fmv.x.h rd, rs1
操作数说明
rd/rs 字段按指令方向分别表示整数寄存器或浮点寄存器。
FMV 类指令复制位模式,不执行 FCVT 数值转换,也不使用 rm。
ZfhZfhmin浮点转换

指令行为说明

FMV.X.H 将 f[rs1] 中的半精度浮点编码按位复制到 x[rd];结果的 bit 15 会被复制到整数寄存器高位。这是位移动,不是浮点到整数数值转换;不会舍入,也不会设置浮点异常标志。

快速理解与检索要点

FMV.X.H 的核心是“位模式搬移”。如果想按数值转换并舍入,应查 FCVT;如果想保留 NaN payload 或检查原始编码,才使用 FMV 类指令。

FMV 类指令不使用 rm 字段。
位移动不规范化 NaN,也不按数值大小改变输入;FMV.X.H 把 bit 15 复制到整数寄存器高位。

常见使用场景

浮点位移动

结合 «fmv.x.h x10, f0 # x10[15:0] = bits of f0» 等实际代码理解该场景。

调试与位模式检查

结合 «fmv.x.h x10, f0 # x10[15:0] = bits of f0» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

这是位复制,不是 FCVT 数值转换。
不使用 rm,也不会设置 fflags。
目标整数寄存器保存的是编码位模式;高位按 bit 15 符号扩展,不是舍入后的整数。

常见问题

FMV.X.H 和 FCVT 有什么区别?

FMV 复制位模式;FCVT 执行数值转换,可能舍入并设置异常标志。

FMV.X.H 会设置 fflags 吗?

不会。它不是算术或数值转换。