FMV.W.X

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

指令手册R-type

把整数寄存器低位按位复制到单精度浮点寄存器。

指令语法

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

指令行为说明

FMV.W.X 将 x[rs1] 的低 32 位按位复制到 f[rd],形成单精度浮点编码;在更宽 FLEN 中结果按 NaN-boxing 规则保存。这是位移动,不是数值转换。

快速理解与检索要点

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

FMV 类指令不使用 rm 字段。
位移动不规范化 NaN,也不按数值大小改变输入。

常见使用场景

浮点位移动

结合 «fmv.w.x f0, x10 # f0 gets bits from x10[31:0], NaN-boxed if FLEN>32» 等实际代码理解该场景。

调试与位模式检查

结合 «fmv.w.x f0, x10 # f0 gets bits from x10[31:0], NaN-boxed if FLEN>32» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

这是位复制,不是 FCVT 数值转换。
不使用 rm,也不会设置 fflags。
源整数寄存器只提供目标格式宽度的低位。

常见问题

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

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

FMV.W.X 会设置 fflags 吗?

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