A.5.108 FUCOMxx: Floating-Point Unordered Compare
FUCOM fpureg ; DD E0+r [386,FPU]
FUCOM ST0,fpureg ; DD E0+r [386,FPU]
FUCOMP fpureg ; DD E8+r [386,FPU]
FUCOMP ST0,fpureg ; DD E8+r [386,FPU]
FUCOMPP ; DA E9 [386,FPU]
FUCOMI fpureg ; DB E8+r [P6,FPU]
FUCOMI ST0,fpureg ; DB E8+r [P6,FPU]
FUCOMIP fpureg ; DF E8+r [P6,FPU]
FUCOMIP ST0,fpureg ; DF E8+r [P6,FPU]
- FUCOM compares ST0 with the given operand, and sets the FPU flags
accordingly. ST0 is treated as the left-hand side of the comparison,
so that the carry flag is set (for a "less-than" result) if ST0 is
less than the given operand.
- FUCOMP does the same as FUCOM, but pops the register stack
afterwards. FUCOMPP compares ST0 with ST1 and then pops the register
stack twice.
- FUCOMI and FUCOMIP work like the corresponding forms of FUCOM and
FUCOMP, but write their results directly to the CPU flags register
rather than the FPU status word, so they can be immediately followed
by conditional jump or conditional move instructions.
The FUCOM instructions differ from the FCOM instructions (section
A.5.73) only in the way they handle quiet NaNs: FUCOM will handle them
silently and set the condition code flags to an "unordered" result,
whereas FCOM will generate an exception.