FDIV.H 的动画为什么限制输入值?
半精度边界、NaN、无穷和舍入组合很多。动画只接受有限且结果可精确核算的示例,避免用 JavaScript 数值模型误导;完整边界行为以官方浮点规则和静态说明为准。
半精度浮点除法:rd = rs1 / rs2。
32位OP-FP字段:opcode=1010011、funct5=00011、fmt=10;rs2为第二个浮点源。
rd、rs1、rs2为f0–f31;f0可写,rd可与源重叠。同一源寄存器须有同一初始值。
RV32/RV64 Zfh(依赖F,Zfhmin不包含本指令);rm可省略,默认dyn使用frm,静态101/110和动态frm=101–111的行为保留。所需扩展与浮点状态须启用。
计算半精度rs1/rs2,按rm舍入;动画仅接受非零有限精确白名单输入和结果,初始fflags=0,不演示边界。
源格式窄于FLEN时须正确NaN-boxed,否则按canonical NaN读取。fflags累积异常,标志置位本身不会触发基础浮点异常trap。
FDIV.H 按 fdiv.h 的半精度格式执行浮点除法,结果按 rm 字段或动态舍入模式舍入后写入 rd。特殊值、NaN、无穷、除零和异常标志遵循 RISC-V 浮点扩展的 IEEE 754 规则。
展示 Zfh 扩展半精度 OP-FP 指令的 ISA 可见流程:解析编码字段,读取浮点寄存器,执行 FDIV 语义并写回 rd。
rm 可留空:按汇编默认 dyn 编码,并使用下方 fcsr.frm。
机器码按 R-type OP-FP 字段切分;半精度浮点 OP-FP 指令使用 opcode 1010011。
当前默认示例 3.0 / 1.5 = 2.0 可精确表示,因此示例 fflags 保持 0。
当前默认示例 3.0 / 1.5 = 2.0 可精确表示,因此示例 fflags 保持 0。
假定扩展可用、FS 已启用、输入已正确 NaN-boxed、初始 fflags=0。仅接受非零有限精确白名单输入和非零白名单结果;零与舍入/异常边界不在动画范围内。同一源寄存器须有同一初始值;rd 可与源重叠,f0 可正常写回。步骤是教学视图。
该动画只展示 RISC-V Zfh 扩展的 ISA 可见 OP-FP 编码、示例数值结果和 fflags 关系;不模拟具体 FPU 流水线、延迟、完整 IEEE 754 边界组合或微架构实现。
FDIV.H 是 Zfh 半精度浮点除法。它使用 OP-FP 编码,funct5=00011 且 fmt=H(10),从两个浮点寄存器读取半精度操作数,按 rm 或动态 frm 舍入后写回 rd,并在 fflags 中累积适用的浮点异常标志。
结合 «# f11 = 7.5; f12 = 2.5; initial fflags = 0 fdiv.h f10, f11, f12, rne # f10 = 3; fflags = 0» 等实际代码理解该场景。
结合 «# f11 = 7.5; f12 = 2.5; initial fflags = 0 fdiv.h f10, f11, f12, rne # f10 = 3; fflags = 0» 等实际代码理解该场景。
半精度边界、NaN、无穷和舍入组合很多。动画只接受有限且结果可精确核算的示例,避免用 JavaScript 数值模型误导;完整边界行为以官方浮点规则和静态说明为准。
不会。浮点除零等情况通过 fflags 的浮点异常标志记录,结果按 RISC-V 采用的 IEEE 754 浮点规则确定。