FCMOV - FCMOV
FCMOV je Floating point Cdalší movE operační kód z Intel x86 architektura, poprvé představena v Pentium Pro procesory. Zkopíruje obsah jednoho z registru zásobníku s plovoucí desetinnou čárkou, v závislosti na obsahu EFLAGS integer flag register, to the ST (0) (top of stack) register. Existuje 8 variant instrukce vybraných podle stavových kódů, které je třeba nastavit, aby instrukce provedla pohyb.
Podobně jako u CMOV instrukce, FCMOV umožňuje provádět některé podmíněné operace bez obvyklých větvení nad hlavou.[1] Má však vyšší latence než podmíněné pokyny větve.[2] Proto je nejužitečnější pro jednoduché, ale nepředvídatelné srovnání nebo podmíněné operace, kde může poskytnout podstatné zvýšení výkonu.
Pokyn se obvykle používá s FCOMI instrukce nebo FCOM -FSTSW -SAHF idiom pro nastavení příslušných stavových kódů na základě výsledku srovnání s plovoucí desetinnou čárkou.
Varianty
Tato tabulka ukazuje varianty pokynů FCMOV.[1] První operand je vždy registr ST (0) (ekvivalentně horní část zásobníku s plovoucí desetinnou čárkou). Sloupec Opcode označuje dvoubajtovou sekvenci, kde druhý bajt je základní hodnota označující počet registru zásobníku s plovoucí desetinnou čárkou, který se má použít pro druhý operand. Přidejte požadované číslo a dokončete odpovídající hodnotu opcode.
Operační kód | Mnemotechnická pomůcka | Význam | Stav |
---|---|---|---|
DA C0 + i | FCMOVB | Přesuňte se, pokud je níže | Nést vlajku soubor |
DA C8 + i | FCMOVE | Přesuňte se, pokud je to stejné | Sada příznaků nula |
DA D0 + i | FCMOVBE | Přesuňte se, pokud je nižší nebo rovno | Nést vlajku nebo nastaven příznak nula |
DA D8 + i | FCMOVU | Přesunout, pokud není uspořádáno | Vlajka parity soubor |
DB C0 + i | FCMOVNB | Přesuňte se, pokud ne níže | Nést vlajku vymazán |
DB C8 + i | FCMOVNE | Pohyb, pokud není stejný | Nulová vlajka vymazána |
DB D0 + i | FCMOVNBE | Přesuňte se, pokud není nižší nebo rovno | Nést vlajku a nulovou vlajku vymazány |
DB D8 + i | FCMOVNU | Přesun, pokud není neobjednaný | Vlajka parity vymazána |