| FUCOMI |
| Сравнение с отразяване на резултата в EFLAGS (разрешава нечислени операнди) |
| Общи форми: |
а. FUCOMI
б. FUCOMI source
в. FUCOMIP
г. FUCOMIP source
|
| |
| Форма |
КОП |
|
I8087 |
I80387 |
B/ME |
| FUCOMI |
DB E9 |
|
|
4 |
|
| FUCOMI ST(i) |
DB E8+i |
|
|
4 |
|
| FUCOMIP |
DF E9 |
|
|
4 |
|
| FUCOMIP ST(i) |
DF E8+i |
|
|
4 |
|
|
| Действие |
IF Instruction syntax IN {а,в} THEN
temp ← ST(1)
ELSE
temp ← source
ENDIF
IF ST(0) и temp са несравними THEN
ZF:PF:CF ← 111b
ELSE IF ST(0) < temp THEN
ZF:PF:CF ← 001b
ELSE IF ST(0) > temp THEN
ZF:PF:CF ← 000b
ELSE (* ST(0) = temp *)
ZF:PF:CF ← 100b
ENDIF
IF Instruction IS FUCOMIP THEN
fpop()
ENDIF
|
| |
Инструкция FUCOMI отразява резултата от сравнението директно във флаговете ZF, PF и CF в EFLAGS. Това позволява сравнение на числа, последвано от условна инструкция (Jcond, CMOVcond, FCMOVcond, SETcond, LOOPcond) да става само с една инструкция, както и при целочислено сравнение с инструкция CMP. Класическото сравнение с инструкция FUCOM изисква две допълнителни инструкции: FSTSW AX/SAHF.
Инструкция FUCOMI разрешава единият или и двата операнда да бъдат нечисла (QNaN). Инструкция FCOMI генерира #I в такъв случай. |
| Флагове |
|
| FPU/CPU |
| 8087 |
287 |
387 |
486 |
P |
P-P |
P-II |
P-III |
P-4 |
B/ME |
| |
|
|
|
|
• |
• |
• |
• |
|
|
Числови изключения | #I |