Округляет значение ST(0) до целого числа в соответствии с режимом округления, заданным битами RC.

7)

6)

5)

4)

3)

2)

1)

Базовая арифметика FPU

5)

4)

3)

2)

1)

Команды пересылки данных FPU

 Команда: FLD источник
 Назначение: Загрузить вещественное число в стек

Команда помещает в стек содержимое источника (32-, 64- или 80-битная переменная или ST(n)). Команда FLD ST(0) делает копию вершины стека.

 

 Команда: FST приемник
 Назначение: Скопировать вещественное число из стека
 Команда: FSTP приемник
 Назначение: Считать вещественное число из стека

Копирует ST(0) в приемник (32- или 64-битную переменную или пустой ST(n) в случае FST; 32-, 64- или 80-битную переменную или пустой ST(n) в случае FSTP). FSTP после этого выталкивает число из стека (помечает ST(0) как пустой).

 

 Команда: FILD источник
 Назначение: Загрузить целое число в стек

Преобразовывает целое число со знаком из источника (16-, 32- или 64-битная переменная) в вещественный формат и помещает в вершину стека.

 


 Команда: FIST приемник
 Назначение: Скопировать целое число из стека
 Команда: FISTP приемник
 Назначение: Считать целое число из стека

Преобразовывает число из вершины стека в целое со знаком и записывает его в приемник (16- или 32-битная переменная для FIST; 16-, 32- или 64-битная переменная для FISTP). FISTP после этого выталкивает число из стека (помечает ST(0) как пустой).

 

 Команда: FXCH приемник
 Назначение: Обменять местами два регистра стека

Обмен местами содержимого регистра ST(0) и приёмника (регистр ST(n)). Если операнд не указан, обменивается содержимое ST(0) и ST(1).


Сопроцессор использует шесть основных типов арифметических команд:

Fxxx Используются ST(1) и ST(0). Первый операнд берется из верхушки стека (источник), второй - следующий элемент стека. Результат выполнения команды записывается в стек.
Fxxx память Источник берется из памяти, приемником является верхушка стека ST(0). Указатель стека ST не изменяется, команда действительна только для операндов с одинарной и двойной точностью.
FIxxx память Аналогично предыдущему типу команды, но операндами могут быть 16- или 32-битовые целые числа.
пр, ист. Fxxx ST, ST(i) Для этого типа регистр ST(i) является источником, а ST(0) - верхушка стека - приемником. Указатель стека не изменяется.
Fxxx ST(i), ST Для этого типа регитр ST(0) является источником, а ST(i) - приемником. Указатель стека не изменяется.
FxxxP ST(i), ST Регистр ST(i) - приемник, регистр ST(0) - источник. После выполнения команды источник ST(0) извлекается из стека.

Строка "xxx" может принимать следующие значения:

ADD Сложение

 

SUB Вычитание

 

SUBR Обратное вычитание, уменьшаемое и вычитаемое

меняются местами

 

MUL Умножение

 

DIV Деление

 

DIVR Обратное деление, делимое и делитель меняются местами

 Команда: FADD приемник,источник
 Назначение: Сложение вещественных чисел
 Команда: FADDP приемник,источник
 Назначение: Сложение вещественных чисел с выталкиванием из стека
 Команда: FIADD источник
 Назначение: Сложение целых чисел

Команда выполняет сложение источника и приемника и помещает результат в приемник. Команда FADDP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды сложения могут принимать следующие формы:

· FADD источник, когда источником является 32- или 64-битная переменная, а приемником — ST(0);

· FADD ST(0),ST(n), FADD ST(n),ST(0), FADDP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU;

· FADD без операндов — эквивалентно FADD ST(0),ST(1); FADDP без операндов — эквивалентно FADDP ST(1),ST(0);

· FIADD источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0).


 Команда: FSUB приемник,источник
 Назначение: Вычитание вещественных чисел
 Команда: FSUBP приемник,источник
 Назначение: Вычитание с выталкиванием из стека
 Команда: FISUB источник
 Назначение: Вычитание целых чисел

Выполняет вычитание источника из приемника и сохраняет результат в приемнике. Команда FSUBP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды вычитания могут принимать следующие формы:

· FSUB источник, когда источником является 32- или 64-битная переменная, содержащая вещественное число, а приемником — ST(0);

· FSUB ST(0),ST(n), FSUB ST(n),ST(0), FSUBP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU;

· FSUB без операндов — эквивалентно FSUB ST(0),ST(1); FSUBP без операндов — эквивалентно FSUBP ST(1),ST(0);

· FISUB источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0).

Если один из операндов — бесконечность, результат — бесконечность соответствующего знака. Если оба операнда — бесконечности одного знака, результат не определен (происходит исключение «недопустимая операция»).

 Команда: FSUBR приемник,источник
 Назначение: Обратное вычитание вещественных чисел
 Команда: FSUBRP приемник,источник
 Назначение: Обратное вычитание с выталкиванием
 Команда: FISUBR источник
 Назначение: Обратное вычитание целых чисел

Команды эквивалентны FSUB/FSUBP/FISUB , но выполняют вычитание приемника из источника, а не источника из приемника.


 Команда: FMUL приемник,источник
 Назначение: Умножение вещественных чисел
 Команда: FMULP приемник,источник
 Назначение: Умножение с выталкиванием из стека
 Команда: FIMUL источник
 Назначение: Умножение целых чисел

Выполняет умножение источника и приемника и помещает результат в приемник. Команда FMULP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды умножения могут принимать следующие формы:

· FMUL источник, когда источником является 32- или 64-битная переменная, а приемником — ST(0);

· FMUL ST(0),ST(n), FMUL ST(n),ST(0), FMULP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU;

· FMUL без операндов — эквивалентно FMUL ST(0),ST(1); FMULP без операндов — эквивалентно FMULP ST(1),ST(0);

· FIMUL источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0).


 Команда: FDIV приемник,источник
 Назначение: Деление вещественных чисел
 Команда: FDIVP приемник,источник
 Назначение: Деление с выталкиванием из стека
 Команда: FIDIV источник
 Назначение: Деление целых чисел

Выполняет деление приемника на источник и сохраняет результат в приемнике. Команда FDIVP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды могут принимать следующие формы:

· FDIV источник, когда источником является 32- или 64-битная переменная, содержащая вещественное число, а приемником — ST(0);

· FDIV ST(0),ST(n), FDIV ST(n),ST(0), FDIVP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU;

· FDIV без операндов — эквивалентно FDIV ST(0),ST(1); FDIVP без операндов — эквивалентно FDIVP ST(1),ST(0);

· FIDIV источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0).


 Команда: FCHS
 Назначение: Изменить знак

Изменяет знак ST(0), превращая положительное число в отрицательное, и наоборот.

 Команда: FRNDINT
 Назначение: Округлить до целого