Андрей Газибаров


без тайни

Инструкциите On-line

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 в такъв случай.
Флагове
C3 C2 C1 C0
— — Ū —
FPU/CPU
8087 287 387 486 P P-P P-II P-III P-4 B/ME
          • • • •  
Числови
изключения
#I
 
Съдържание Пълен текст
 
  PDF, 3.6M Приложение, 18К