Форматы данных и команды их обработки процессоров Pentium III, Pentium IVРефераты >> Программирование и компьютеры >> Форматы данных и команды их обработки процессоров Pentium III, Pentium IV
FLDL2T Загрузка (push) log2( 10)
FLDLG2 Загрузка (push) lg(2)
FLDLN2 Загрузка (push) ln(2)
FLDPI Загрузка (push) pi
FLDZ Загрузка (push) + 0,0
Базовая арифметика
FABS Нахождение абсолютного значения
FADD Сложение вещественных чисел
FADDP Сложение вещественных чисел с извлечением
FCHS Изменение знака
FDIV Деление вещественных чисел
FDIVP Деление вещественных чисел с извлечением
FDIVR Обратное деление вещественных чисел
FDIVRP Обратное деление вещественных чисел с извлечением
FIADD Сложение с целым числом
FIDIV Деление на целое число
FIDIVR Обратное деление целых чисел
FIMUL Умножение на целое число
FISUB Вычитание целого числа
FISUBR Вычитание из целого числа
FMUL Умножение вещественных чисел
FMULP Умножение вещественных чисел с извлечением
FPREM Нахождение частичного остатка
FPREM1 Нахождение частичного остатка в стандарте IEEE (387+)
FRNDINT Округление до ближайшего целого
FSCALE Масштабирование — умножение на округленную в сторону нуля степень числа 2
FSQRT Извлечение квадратного корня
FSUB Вычитание вещественного числа
FSUBP Вычитание вещественных чисел с извлечением
FSUBR Обратное вычитание числа
FSUBRP Обратное вычитание с извлечением
FXTRACT Выделение мантиссы и порядка числа
Сравнение данных
FCOM Сравнение вещественных чисел (установка флагов сопроцессора)
FCOMI Сравнение и соответствующая установка флагов в EFLAGS (ZF, PF, CF) (P6+)
FCOMIP Сравнение и соответствующая установка флагов в EFLAGS (ZF, PF, CF), с извлечением (P6+)
FCOMP Сравнение вещественных чисел с извлечением
FCOMPP Сравнение вещественных чисел с двойным извлечением
FICOM Сравнение с целочисленным операндом из памяти
FICOMP Сравнение с целочисленным операндом из памяти с извлечением
FTST Проверка на нуль
FUCOM Сравнение без генерации исключения в случае NaN (387+)
FUCOMI Сравнение без генерации исключения в случае NaN и соответствующая установка флагов в EFLAGS (ZF, PF, CF) (P6+)
FUCOMIP Сравнение без генерации исключения в случае NaN и соответствующая установка флагов в EFLAGS (ZF, PF, CF) с извлечением (P6+)
FUCOMP Сравнение без генерации исключения в случае NaN с извлечением (387+)
FUCOMPP Сравнение без генерации исключения в случае NaN с двойным извлечением (387+)
FXAM Анализ числа — установка кода условия в СО, С2, СЗ
Трансцендентные функции
Р2ХМ1 Вычисление
FCOS Косинус (387+)
PPATAN Арктангенс частного с извлечением
FPTAN Вычисление тангенса и загрузка (push) в стек +1,0
FSIN Вычисление синуса (387+)
FSINCOS Вычисление синуса и косинуса с помещением (push) в стек (387+)
FYL2X Вычисление Yxlog2(X)
FYL2XP1 Вычисление Yxlog2(X+1)
Управление сопроцессором
FCLEX Сброс флагов исключений с предварительной проверкой
ожидающих немаскированных исключений
FDECSTP Декремент указателя стека FPU
FFREE Освобождение регистра — пометка как свободного
FINCSTP Инкремент указателя стека FPU
FINIT Инициализация FPU с предварительной проверкой ожидающих исключений
FLDCW Загрузка управляющего слова (FPU CW) из памяти
FLDENV Загрузка состояния сопроцессора из памяти, сохраненного инструкциями FSTENV/FNSTENV
FNCLEX Сброс флагов исключений без проверки ожидающих
FNINIT Инициализация FPU без проверки ожидающих исключений
FNOP Пустая операция FPU
FNSAVE Сохранение состояния сопроцессора и стека регистров в памяти без проверки ожидающих исключений
FNSTCW Сохранение управляющего слова без проверки ожидающих исключений
FNSTENV Сохранение состояния сопроцессора (SR, CR, TAGW, FIP и FDP) в памяти без проверки ожидающих исключений
FNSTSW Запись слова состояния без проверки ожидающих исключений
FRSTOR Загрузка состояния сопроцессора и регистров из памяти
FSAVE Сохранение состояния сопроцессора и стека регистров в памяти с предварительной проверкой ожидающих исключений
FSTCW Сохранение управляющего слова с предварительной проверкой ожидающих исключений
FSTENV Сохранение состояния сопроцессора (SR, CR, TAGW, FIP и FDP) в памяти с предварительной проверкой ожидающих исключений
FSTSW Запись слова состояния для последующего переноса кода завершения в регистр флагов с предварительной проверкой ожидающих исключений
WAIT/FWAIT Синхронизация — останов CPU до завершения текущей операции FPU, проверка ожидающих исключений FPU
Инструкции ММХ появились в процессорах Pentium ММХ и с тех пор поддерживаются всеми более современными процессорами (Pentium Pro, появившийся раньше, эти инструкции не поддерживает). Они имеют сложную мнемонику, которая включает следующие элементы:
• префикс Р (Packed), указывающий на обработку упакованных форматов;
• мнемонику операции (например, ADD, CMP или XOR);
• суффикс, идентифицирующий тип насыщения: US (Unsigned Saturation) — насыщение беззнаковое, S (Signed saturation) — насыщение знаковое;
• суффикс, идентифицирующий тип данных: В — упакованные байты, W — упакованные слова, D — упакованные двойные слова, Q -учетверенное слово.
Инструкции, у которых типы входных и выходных данных различаются (например, преобразования), имеют два суффикса.
Для инструкций пересылки данных операнды источника и назначения могут находиться в памяти (m32 или m64), целочисленных регистрах (ir32) или регистрах ММХ (mm). Для остальных инструкций, кроме вышеперечисленных, операнд-источник может быть и непосредственным, а операнд назначения всегда является регистром ММХ. Для операндов, находящихся в памяти, применимы все существующие режимы адресации.
Таблица. Инструкции ММХ
Инструкция Описание
EMMS Очистка стека регистров — установка всех единиц в слове тегов
Пересылка данных
MOVD Пересылка данных в младшие 32 бита регистра ММХ (с заполнением старших бит нулями) или из младших 32 бит регистра ММХ
MOVQ Пересылка данных (64 бит) из/в регистр ММХ
Преобразование форматов
PACKSSDW Упаковка со знаковым насыщением четырех двойных слов в четыре
слова
PACKSSWB Упаковка со знаковым насыщением восьми слов в восемь байт
PACKUSWB Упаковка с насыщением восьми знаковых слов в восемь беззнаковых байт
PUNPCKHBW Чередование в регистре назначения байт старшей половины операнда-источника с байтами старшей половины операнда назначения
PUNPCKHWD Чередование в регистре назначения слов старшей половины операнда-источника со словами старшей половины операнда назначения
PUNPCKHDQ Чередование в регистре назначения двойного слова старшей половины операнда-источника с двойным словом старшей половины операнда назначения
PUNPCKLBW Чередование в регистре назначения байт младшей половины операнда-источника с байтами младшей половины операнда назначения
PUNPCKLWD Чередование в регистре назначения слов младшей половины операнда-источника со словами младшей половины операнда назначения
PUNPCKLDQ Чередование в регистре назначения двойного слова младшей половины операнда-источника с двойным словом младшей половины операнда назначения