首页/指令库/FMVH-X-D
FMVH.X.D

RISC-V FMVH.X.D 指令详解

指令手册R-type

在 RV32 上把双精度浮点寄存器的高 32 位复制到整数寄存器。

指令语法

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

指令行为说明

FMVH.X.D 是 Zfa 为 RV32+D 提供的位移动指令,将 f[rs1] 的 bit 63:32 复制到 x[rd]。它与 FMV.X.W 配合可把一个双精度编码拆到两个整数寄存器中;这是位复制,不是数值转换。

快速理解与检索要点

FMVH.X.D 用来补齐 RV32 上双精度 64 位编码和 32 位整数寄存器之间的位搬移路径。页面重点是位顺序和“不是数值转换”。

FMVH.X.D 取高 32 位;FMVP.D.X 用 rs1 提供低 32 位、rs2 提供高 32 位。
这些指令不使用 rm,也不会改变 NaN payload。

常见使用场景

浮点位移动

结合 «fmvh.x.d x10, f11 ; x10 = f11[63:32] (RV32 only)» 等实际代码理解该场景。

RV32 双精度数据搬移

结合 «fmvh.x.d x10, f11 ; x10 = f11[63:32] (RV32 only)» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

仅用于 RV32+D 的双精度位搬移场景;RV64 通常使用 FMV.X.D/FMV.D.X。
这是位复制,不是 FCVT 数值转换。
不会设置浮点异常标志。

常见问题

FMVH.X.D 是 FCVT 吗?

不是。它只复制位模式,不按数值解释并转换。

FMVH.X.D 为什么强调 RV32?

因为 RV32 整数寄存器只有 32 位,需要成对搬移 64 位双精度编码。