深入了解FPU指令集:比较、常量及超越函数指令详解
1. FPU比较指令概述
FPU(浮点运算单元)提供了多种用于比较实数值的指令,这些指令在处理浮点运算时起着关键作用。主要的比较指令包括 fcom 、 fcomp 、 fcompp 、 ftst 、 fcomi 和 fcomip 。
2. 常规比较操作及状态处理
在进行浮点比较后,大多数程序需要立即测试条件码位。然而,FPU本身没有直接测试条件码的指令。因此,通常采用以下步骤:
1. 使用 fstsw 指令将浮点状态寄存器的值复制到 AX 寄存器。
2. 利用 sahf 指令将 AH 寄存器的值复制到x86 - 64的条件码位。
3. 测试标准的x86 - 64标志位来检查条件。
这种方法将 C0 复制到进位标志, C2 复制到奇偶标志, C3 复制到零标志,但 sahf 指令不会将 C1 复制到任何x86 - 64的标志位。由于 sahf 不复制FPU状态位到符号或溢出标志,所以在测试浮点比较结果时,应使用无符号操作(如 seta 、 setb
超级会员免费看
订阅专栏 解锁全文
68

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



