浮点数处理与指令编码详解
1. 浮点数除法异常
在浮点数除法运算中,如果源操作数为零,会产生除零异常。当操作数为正无穷、负无穷、零或 NaN 时,除法运算存在多种特殊情况。
1.1 FIDIV 指令
FIDIV 指令会先将整数源操作数转换为双扩展精度浮点格式,然后将其除以 ST(0)。其语法如下:
FIDIV m16int
FIDIV m32int
2. 比较浮点数的值
由于 CMP 指令使用整数减法进行比较,所以不能用于比较浮点数,而应使用 FCOM 指令。执行 FCOM 后,在逻辑 IF 语句中使用条件跳转指令(如 JA、JB、JE 等)之前,需要采取特殊步骤。因为所有浮点数都是隐式有符号的,所以 FCOM 执行有符号比较。
2.1 FCOM、FCOMP、FCOMPP 指令
- FCOM :将 ST(0) 与源操作数进行比较,源操作数可以是内存操作数或 FPU 寄存器。
- FCOMP :执行与 FCOM 相同的操作,最后从栈中弹出 ST(0)。
- FCOMPP :与 FCOMP 相同,但会再弹出一次栈。
| 指令 | 描述 |
|---|---|
超级会员免费看
订阅专栏 解锁全文
4

被折叠的 条评论
为什么被折叠?



