FMV.X.H 和 FCVT 有什么区别?
FMV 复制位模式;FCVT 执行数值转换,可能舍入并设置异常标志。
把半精度浮点编码按位复制到整数寄存器。
扩展条件:RV32/RV64,要求 Zfh 1.0 或 Zfhmin 1.0(均依赖 F)。 标准特权架构中,浮点状态 FS=Off 时访问浮点状态产生非法指令异常。
FMV.X.H 由 Zfh 或 Zfhmin 提供(两者都依赖 F),将 f[rs1] 中的半精度浮点编码按位复制到 x[rd];bit 15 会复制到整数寄存器的高 XLEN-16 位。这是位移动,不是浮点到整数数值转换;不会舍入,也不会设置浮点异常标志。
展示 Zfh/Zfhmin 扩展 FMV.X.H 位模式搬移:解析 OP-FP 编码,读取源寄存器位模式,按官方规则不做数值转换地写回目标寄存器。
假定所需扩展存在且浮点状态已启用。整数源输入覆盖 XLEN 位;浮点源输入只提供所选格式的位片段,上方 NaN-box 位被忽略。
机器码按 R-type OP-FP 字段切分;FMV 位搬移指令使用 opcode 1010011。
FMV.X.H 将半精度 bit15 符号扩展到 XLEN=32 的高位;不进行数值转换。
该动画只展示 RISC-V Zfh/Zfhmin 扩展 FMV 的 ISA 可见编码和位模式搬移;不模拟 FPU 流水线、浮点数值解释、异常处理或微架构实现。
FMV.X.H 的核心是“位模式搬移”。如果想按数值转换并舍入,应查 FCVT;如果想保留 NaN payload 或检查原始编码,才使用 FMV 类指令。
结合 «fmv.x.h x10, f0 # f0[15:0]=0xC100 -> RV32: 0xFFFFC100; RV64: 0xFFFFFFFFFFFFC100» 等实际代码理解该场景。
结合 «fmv.x.h x10, f0 # f0[15:0]=0xC100 -> RV32: 0xFFFFC100; RV64: 0xFFFFFFFFFFFFC100» 等实际代码理解该场景。
FMV 复制位模式;FCVT 执行数值转换,可能舍入并设置异常标志。
不会。它不是算术或数值转换。