Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 25 - Архитектура и программирование сопроцессора.ppt
Скачиваний:
42
Добавлен:
18.02.2023
Размер:
539.14 Кб
Скачать

Вещественные арифметические команды

fmul – умножает значения st(0) и st(1). Результат в st(0).

fmul st(i) – команда умножает значения st(0) и st(i). Результат в st(0).

fmul st(i), st – команда умножает значения st(0) и st(i). Результат в st(i).

fmulp st(i), st – команда умножает значения st(0) и st(i). Далее осуществляется выталкивание значения из стека, результат, таким образом, остается в регистре st(i-1).

Вещественные арифметические команды

fdiv – делит значение st(0) на st(1). Результат в st(0).

fdiv st(i) – команда делит значение st(0) на значение st(i). Результат в st(0).

fdiv st(i), st – команда делит значение st(0) на значение st(i). Результат в st(i).

fdivp st(i), st – команда делит значение st(0) на значение st(i). Далее осуществляется выталкивание значения из стека, результат, таким образом, остается в регистре st(i-1).

fdivr st(i), st – команда делит значение st(i) на значение st(0). Результат в st(0).

fdivrp st(i), st – команда делит значение st(i) на значение st(0). Далее осуществляется выталкивание значения из стека, результат, таким образом, остается в регистре st(i-1).

Вещественные арифметические команды

fsqrt – вычисление квадратного корня st(0). Результат в st(0).

fabs – вычисление модуля числа в st(0). Результат в st(0).

fchs – изменение знака значения в st(0). Результат в st(0).

fxtract – выделение мантиссы и порядка числа из st(0). Результат: st(0) – мантисса, st(1) – порядок.

fscale – команда масштабирования – изменяет порядок значения, находящегося в st(0) на величину в st(1).

frndint – команда округления до целого значения – округляет значение находящееся в st(0) согласно состоянию RC.

Команды сравнения

Все команды сравнения устанавливают значения бит C0 – C3 в SWR в соответствии с результатом сравнения.

fcom [операнд в памяти] – команда без операндов сравнивает два значения: st(0) и st(1). Если операнд указан, то сравнивается st(0) и значение в памяти.

fcomp операнд – сравнивает значение st(0) и значение в памяти. После выталкивает из стека значение st(0).

fcompp – сравнивает значение st(0) и st(1). После выталкивает из стека st(0) и st(1).

ficom операнд – сравнивает значение st(0) и значение в памяти.

ficomp операнд – сравнивает значение st(0) и значение в памяти. После выталкивает значение st(0).

Команды сравнения

ftst – сравнивает значение st(0) с нулем.

fucom st(i) – команда сравнения (без учета порядка) в регистрах st(0) и st(i).

fucomp st(i) – команда сравнения (без учета порядка) в регистрах st(0) и st(i). Выталкивание из стека.

fucompp st(i) – команда сравнения (без учета порядка) в регистрах st(0) и st(i). Двойное выталкивание из стека.

fxam – команда анализирует значение в st(0) и формирует значения бит c0 – c3 в регистре состояния SWR. По состоянию этих бит можно судить о знаке мантиссы, корректности записи вещественного числа, типе специального численного значения (не число, бесконечность, нуль, денормализованное значение).

Команды трансцендентных функций

fcos – вычисление косинуса значения st(0). Результат в st(0).

fsin – вычисление синуса значения st(0). Результат в st(0).

fsincos – вычисление синуса и косинуса значения st(0). Результат: st(0) – sin, st(1) – cos.

fptan – вычисление частичного тангенса для значения в st(0). Результат в st(0) и st(1). Истинное значение тангенса в st(0).

fpatan – вычисление частичного арктангенса для значения st(1)/st(0). Результат в st(0).

Команды трансцендентных функций

f2xm1 – команда вычисления выражения Y=2^X-1. Исходное значение Х должно находится в st(0) и должно лежать в диапазоне -1≤X≤1. Результат помещается в регистр st(0).

fyl2x – команда вычисления выражения Z=Y*log2(X). Исходное значение Х размещается в st(0), а Y – st(1). X>0. Перед записью результата значения X и Y выталкиваются из стека, а результат записывается в st(0).

fyl2xp1 – команда вычисления выражения Z=Y*log2(X+1). Исходное значение Х размещается в st(0), а Y – st(1). 0≤|X| ≤1. Перед записью результата значения X и Y выталкиваются из стека, а результат записывается в st(0).

Команды управления сопроцессором

wait (fwait) – команда синхронизации с сопроцессором.

finit (fninit) – инициализация сопроцессора: CWR=037h, SWR=0, TWR=11…11b; DPR и IPR = 0.

fstsw / fnstsw ax – команда сохранения регистра swr в регистре ax.

fstsw / fnstsw назначение – команда сохранения регистра swr в ячейке памяти.

fstcw / fnstcw назначение – команда сохранения регистра cwr в ячейке памяти.

fldcw источник – команда загрузки регистра cwr из ячейки памяти.

Команды управления сопроцессором

fclex / fnclex – команда сброса флагов исключений в регистре swr сопроцессора.

fincstp – команда увеличения указателя стека на единицу. Псевдо выталкивание значения из стека.

fdecstp – команда уменьшения указателя стека на единицу. Псевдо помещение значения в стек.

ffree st(i) – команда освобождения регистра стека st(i).

fnop – пустая команда.

Команды управления сопроцессором

fsave / fnsave приемник – команда сохранения полного состояния сопроцессора в памяти. Размер блока памяти зависит от режима адресации: use16 – 94 байта, use32 – 108 байт.

frstor источник – команда восстановления полного состояния среды сопроцессора из области памяти.

fstenv / fnstenv приемник – команда сохранения частичного состояния сопроцессора в памяти. Размер блока памяти зависит от режима адресации: use16 – 14 байт, use32 – 28 байт.

fldenv источник – команда восстановления частичного состояния среды сопроцессора из области памяти.