Классификация команд
После обзора команды будут рассмотрены подробно.
Категория | Подкатегория | Команды |
Управление сопроцессором | Инициализация | FINIT |
Работа со средой | FSAVE, FSTENV, FLDENV, FCLEX, FLDCW, FSTCW, FSTSW, FRSTOR | |
Работа со стеком | FINCSTP, FDECSTP, FFREE, | |
Вспомогательные | FNOP, FWAIT | |
Передача данных | Вещественные числа | FLD, FST, FSTP |
Целые числа | FILD, FIST | |
Десятичные числа | FBLD, FBST, FBSTP | |
Загрузка констант | 0, 1, число PI, Log2(10), Log2(e), Log10(2), LN(2) | |
Обмен | FXCH | |
Сравнение данных | Вещественные числа | FCOM, FCOMP, FCOMPP, FUCOMP, FUCOMPP |
Целые числа | FICOM, FICOMP | |
Анализ | FTST, FXAM | |
Арифметические | Вещественные числа | FADD, FADDP, FSUB, FSUBP, FSUBR, FSUBRP, FMUL, FMULP, FDIV, FDIVP, FDIVR, FDIVRP |
Целые числа | FIADD, FISUB, FISUBR, FIMUL, FIDIV, FIDIVR | |
Вспомогптельные | FABS, FCHS, FSQRT, FSCALE, FPREM, FPREM1, FRNDINT | |
Трансцендентные | Тригонометрия | Синус, Косинус, Синус + Косинус, Тангенс, Арктангенс |
Логарифмы и степени | 2 в степени X минус 1, Y*Log2(X), Y*Log2(X+1) |
Инициализация
Перед использованием любых команд математического сопроцессора необходимо выполнить его инициализацию командой FINIT (Floating-point INITialisation a device FPU). Алгоритм работы команды выглядит следующим образом:
|
|
· В регистр управления (cwr) помещается число 37h, означающее, что округление будет выполняться до ближайшего целого (поле гс = 0).
· Биты с нулевого по пятый устанавливаются в 1, что означает маскирование всех исключений.
· Поле управления точностью устанавливается для работы с максимальной точностью в 64 бит (рс =11).
· Регистр состояния (swr) обнуляется, а это означает, что исключения отсутствуют и физический регистр R0 регистрового стека становится вершиной стека st(O).
· В регистр тегов (twr) заносятся единицы, а это означает, что все регистры сопроцессора считаются пустыми.
· Регистры указателей данных (dpr) и команд (ipr) обнуляются.
Команда | Описание | |
FINIT | Floating-point INITializing a device FPU Инициализация сопроцессора. |
Работа со средой
Команда | Описание | |||
FSAVE приемник | Floating-point SAVE fpu state. Сохранение состояния оборудования и файла регистров в памяти. | |||
FSTENV источник | Floating-point STore ENVironment. Сохранение состояния оборудования (источника - SR, CR, TAGW, FIP, FDP) в памяти. | |||
FLDENV источник | Floating-point LoaD ENVironment. Загрузка состояния оборудования (источника - SR, CR, TAGW, FIP, FDP) из памяти. | |||
FRSTOR src | Floating-point ReSTORe fpu state. Восстановление состояния оборудования и файла регистров в памяти. | |||
FCLEX | Floating-point CLear EXception. Сброс исключений. | |||
FLDCW источник | Floating-point LoaD Control Word. Загрузка управляющего слова (16 бит) из источника в регистр управления SWR | |||
FSTCW приемник | Floating-point STore Control Word. Сохранение управляющего слова в приемнике. | |||
FSTSW приемник | Floating-point STore Status Word. Запись слова состояния из регистра управления SWR в приемник (регистр или память). | |||
Работа со стеком
|
|
Команда | Описание | |
FINCSTP | Floating-point INCrement Stack Top Pointer. Инкремент указателя стека. | |
FDECSTP | Floating-point DECrement Stack Top Pointer. Декремент указателя стека. | |
FFREE ST(i) | Floating-point FREE fpu stack register. Показать регистр ST(i) как свободный. |
Вспомогательные
FNOP | Floating-point No Operation. Холостая операция сопроцессора. |
FWAIT | Floating-point WAIT. Ожидание процессором завершения текущей операции сопроцессором. |