Система команд устройства обработки чисел с плавающей запятой i80x87
Обозначения:
ST(i) – арифметический регистр FPU
mem – адрес ячейки памяти (способы адресации те же, что и в командах i80x86)
стек – стек увеличивается 1 регистр (декремент поля ТОР слова состояния SW)
стек – стек сокращается на 1 регистр (инкремент поля ТОР слова состояния SW)
1. Команды пересылки данных
Мнемоника |
Операция |
Примечание |
1.1. Операции с вещественными числами |
||
FLD ST(i) FLD mem |
стек, ST(i+1)ST стек, [mem]ST |
|
FST ST(i) FST mem |
ST ST(i) ST [mem] |
mem – переменная в формате ОТ/ДТ |
FSTP ST(i) FSTP mem |
ST ST(i), стек ST [mem], стек |
|
1.2. Операции с целыми числами (форматы ЦС, КЦ, ДЦ) |
||
FILD mem |
стек, [mem]ST |
|
FIST mem |
ST [mem] |
mem – переменная в формате ЦС/КЦ |
FISTP mem |
ST[mem], стек |
|
1.3. Операции с упакованными двоично-десятичными 10-байтовыми числами |
||
FBLD mem |
стек, [mem]ST |
операнд не проверяется на наличие запрещенных тетрад 1010b-1111b |
FBSTP mem |
ST[mem], стек |
|
1.4. Команды загрузки констант |
||
FLDZ |
стек, +0.0 ST |
|
FLD1 |
стек, +1.0 ST |
|
FLDPI |
стек, ST |
|
FLDL2T |
стек, log 2 10 ST |
|
FLDL2E |
стек, log 2 e ST |
|
FLDLG2 |
стек, lg 2 ST |
|
FLDLN2 |
стек, ln 2 ST |
|
1.5. Команды обмена |
||
FXCH ST(i) FXCH |
ST ST(i) ST ST(1) |
|
FCMOVE ST(i) |
if ZF=1: ST(i)ST |
Начиная с процессоров P6.
Используются после команд: FCOM (любого сравнения) FSTSW AX SAHF |
FCMOVNE ST(i) |
if ZF=0: ST(i)ST |
|
FCMOVB ST(i) |
if CF=1: ST(i)ST |
|
FCMOVBE ST(i) |
if CF=1 & ZF=1: ST(i)ST |
|
FCMOVNB ST(i) |
if CF=0: ST(i)ST |
|
FCMOVNBE ST(i) |
if CF=0 & ZF=0: ST(i)ST |
|
FCMOVU ST(i) |
if PF=1: ST(i)ST |
|
FCMOVNU ST(i) |
if PF=0: ST(i)ST |