Округляет значение 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 |
Назначение: | Округлить до целого |