FINIT | Инициализация сопроцессора. |
FSTSW AX | Запись слова состояния в AX. |
FSTSW dest | Запись слова состояния в dest. |
FLDCW src | Загрузка управляющего слова (16 бит) из dest. |
FSTCW dest | Сохранение управляющего слова в dest. |
FCLEX | Сброс исключений. |
FSTENV dest | Сохранение состояния оборудования (SR, CR, TAGW, FIP, FDP) в памяти. |
FLDENV src | Загрузка состояния оборудования из памяти. |
FSAVE dest | Сохранение состояния оборудования и файла регистров в памяти. |
FRSTOR src | Загрузка состояния оборудования и файла регистров в памяти. |
FINCSTP | Инкремент указателя стека. |
FDECSTP | Декремент указателя стека. |
FFREE ST(i) | Освобождение регистра – пометка ST(i) как свободного. |
FNOP | Холостая операция сопроцессора. |
WAIT (FWAIT) | Ожидание процессором завершение текущей операции сопроцессором. |
Расширение MMX.Расширение MMX ориентировано в основном на использование в мультимедийных приложениях. Основная идея MMX заключается в одновременной обработке нескольких элементов данных за одну инструкцию. Расширение MMX появилось в процессорах модификации Pentium P54C и присутствует во всех последних модификациях этого процессора.
Расширение MMX использует новые типы упакованных данных: упакованные байты (восемь байт), упакованные слова (четыре слова), упакованные двойные слова (два двойных слова), учетверенное слово. Расширение MMX включает восемь регистров общего пользования (MM0-MM7). Размер регистров составляет 64 бита. Физически эти регистры пользуются младшими битами рабочих регистров сопроцессора. Команды MMX «портят» регистр состояния и регистр тэгов. По этой причине совместное использование команд MMX и команд сопроцессора может вызвать определенные трудности. Другими словами, перед каждым использованием команд MMX Вам придется сохранять контекст сопроцессора, а это может весьма замедлить работу программы. Важно отметить также, что команды MMX работают непосредственно с регистрами сопроцессора, а не с указателями на элементы стека.
Команды MMX расширения(по книге [3])
EMMS | Очистка стека регистров. Установка всех единиц в слове тегов. |
MOVD mm,m32/ir32 | Пересылка данных в младшие 32 бита регистра MMX с заполнением старших бит нулями. |
MOVD m32/ir32,mm | Пересылка данных из младших 32 бит регистра MMX. |
MOVQ mm,mm/m64 | Пересылка данных в регистр MMX. |
MOVQ mm/m64,mm | Пересылка данных из регистра MMX. |
PACKSSDW mm,mm/m64 | Упаковка со знаковым насыщением двух двойных слов, расположенных в mm, и двух двойных слов mm/m64 в четыре слова, расположенных в mm. |
PACKSSWB mm,mm/m64 | Упаковка со знаковым насыщением четырех слов, расположенных в mm, и четырех слов mm/m64 в восемь байт, расположенных в mm. |
PACKUSWB mm,mm/m64 | Упаковка с насыщением четырех знаковых слов, расположенных в mm, и четырех слов mm/m64 в восемь беззнаковых байт, расположенных в mm. |
PADDB mm,mm/m64 PADDW mm,mm/m64 PADDD mm,mm/m64 | Сложение упакованных байт (слов или двойных слов) без насыщения (с циклическим переполнением). |
PADDSB mm,mm/m64 PADDSW mm,mm/m64 | Сложение упакованных байт (слов) со знаковым насыщением. |
PADDUSB mm,mm/m64 PADDUSW mm,mm/m64 | Сложение упакованных байт (слов) с беззнаковым насыщением. |
PAND mm,mm/m64 | Логическое «И». |
PANDN mm,mm/m64 | Логическое «И-НЕ». |
PCMPEQB mm,mm/m64 PCMPEQD mm,mm/m64 PCMPEQW mm,mm/m64 | Сравнение (на равенство) упакованных байт (слов, двойных слов). Все биты элемента результата будут единичными (true) при совпадении соответствующих элементов операндов и нулевыми (false)- при несовпадении. |
PCMPGTB mm,mm/m64 PCMPGTD mm,mm/m64 PCMPGTW mm,mm/m64 | Сравнение (по величине) упакованных знаковых байт (слов, двойных слов). Все биты элемента результата будут единичными (true), если соответствующий элемент операнда назначения больше элемента операнда источника, и нулевыми (false) в противном случае. |
PMADDWD mm,mm/m64 | Умножение четырех знаковых слов операнда источника на четыре знаковых слова операнда назначения. Два двойных слова результатов умножения младших слов суммируются и записываются в младшее двойное слово операнда назначения. Два двойных слова результатов умножения старших слов суммируются и записываются в старшее двойное слово операнда назначения. |
PMULHW mm,mm/m64 | Умножение упакованных знаковых слов с сохранением только старших 16 бит элементов результата. |
PMULLW mm,mm/m64 | Умножение упакованных знаковых или беззнаковых слов с сохранением только младших 16 бит результата. |
POR mm,mm/m64 | Логическое «ИЛИ». |
PSHIMD mm,imm PSHIMQ mm,imm PSHIMW mm,imm | PSHIMD представляет инструкции PSLLD, PSRAD и PSRLD с непосредственным операндом–счетчиком. PSHIMW представляет инструкции PSLLW,PSRAW, PSRLW. PSHIMQ представляет инструкции PSLLQ и PSRLQ с непосредственным операндом-счетчиком. |
PSLLD mm,mm/m64 PSLLQ mm,mm/m64 PSLLW mm,mm/m64 | Логический сдвиг влево упакованных слов (двойных, учетверенных) операнда назначения на количество бит, указанных в операнде–источнике, с заполнением младших бит нулями. |
PSRAD mm,mm/m64 PSRAW mm,mm/m64 | Арифметический сдвиг вправо упакованных двойных (учетверенных) знаковых слов операнда назначения на количество бит, указанных в операнде-источнике, с заполнением младших бит битами знаковых разрядов. |
PSRLD mm,mm/m64 PSRLQ mm,mm/m64 PSRLW mm,mm/m64 | Логический сдвиг вправо упакованных слов (двойных, учетверенных) операнда назначения на количество бит, указанных в операнде–источнике, с заполнением старших бит нулями. |
PSUBB mm,mm/m64 PSUBW mm,mm/m64 PSUBD mm,mm/m64 | Вычитание упакованных байт (слов или двойных слов) без насыщения (с циклическим антипереполнением). |
PSUBSB mm,mm/m64 PSUBSW mm,mm/m64 | Вычитание упакованных знаковых байт (слов) с насыщением. |
PSUBUSB mm,mm/m64 PSUBUSW mm,mm/m64 | Вычитание упакованных беззнаковых байт (слов) с насыщением. |
PUNPCKHBW mm,mm/m64 | Чередование в регистре назначения байт старшей половины операнда-источника с байтами старшей половины операнда назначения. |
PUNPCKHWD mm,mm/m64 | Чередование в регистре назначения слов старшей половины операнда-источника со словами старшей половины операнда назначения. |
PUNPCKHDQ mm,mm/m64 | Чередование в регистре назначения двойного слова старшей половины операнда–источника с двойным словом старшей половины операнда назначения. |
PUNPCKLBW mm,mm/m64 | Чередование в регистре назначения байт младшей половины операнда–источника с байтами младшей половины операнда назначения. |
PUNPCKLWD mm,mm/m64 | Чередование в регистре назначения слов младшей половины операнда–источника со словами младшей половины операнда назначения. |
PUNPCKLDQ mm,mm/m64 | Чередование в регистре назначения двойного слова младшей половины операнда–источника с двойным словом младшей половины операнда назначения. |
PXOR mm,mm/m64 | Исключающее «ИЛИ». |