Команды архитектуры x86
-
Команды общего
назначения
-
Системные команды
-
Команды
сопроцессора (x87 FPU)
-
Команды
управления состоянием сопроцессора и SIMD
-
Команды
технологии MMX
-
Команды
расширения SSE
-
Команды
расширения SSE2
-
Команды
расширения SSE3
-
Команды расширения
3DNow!
В
описаниях команд могут встречаться следующие обозначения:
Byte - 8-битное целое (байт)
Word - 16-битное целое (слово)
DWord - 32-битное целое (двойное слово)
QWord - 64-битное целое (учетверенное слово)
Float - вещественное число одинарной точности (32 бита)
Double - вещественное число двойной точности (64 бита)
Команды общего назначения
Команды передачи данных
MOV |
Присваивание |
CMOVxx |
Условное
присваивание |
XCHG |
Обмен значений |
BSWAP |
Перестановка
байтов |
XADD |
Обмен и сложение |
CMPXCHG |
Сравнение и обмен |
CMPXCHG8B |
Сравнение и обмен
8 байтов |
PUSH |
Поместить значение
в стек |
POP |
Взять значение из
стека |
PUSHA/PUSHAD |
Поместить значения
регистров общего назначения в стек |
POPA/POPAD |
Взять значения
регистров общего назначения из стека |
IN |
Прочитать значение
из порта ввода/вывода |
OUT |
Записать значение
в порт ввода/вывода |
CWD |
Преобразовать Word в DWord |
CDQ |
Преобразовать DWord в QWord |
CBW |
Преобразовать Byte в Word |
CWDE |
Преобразовать Word в DWord в регистре eax |
MOVSX |
Присвоить и
расширить с учетом знака |
MOVZX |
Присвоить и
расширить нулевым значением |
Двоичные арифметические команды
ADD |
Сложение |
ADC |
Сложение с
переносом |
SUB |
Вычитание |
SBB |
Вычитание с заемом |
IMUL |
Знаковое умножение |
MUL |
Беззнаковое умножение |
IDIV |
Знаковое деление |
DIV |
Беззнаковое деление |
INC |
Инкремент |
DEC |
Декремент |
NEG |
Смена знака |
CMP |
Сравнение |
Двоично-десятичные (BCD) арифметические команды
DAA |
Десятичная
коррекция после сложения |
DAC |
Десятичная
коррекция после вычитания |
AAA |
ASCII коррекция
после сложения |
AAS |
ASCII коррекция
после вычитания |
AAM |
ASCII коррекция
после умножения |
AAD |
ASCII коррекция
перед делением |
Логические команды
AND |
Побитовое
логическое И |
OR |
Побитовое
логическое ИЛИ |
XOR |
Побитовое
логическое Исключающее ИЛИ |
NOT |
Побитовое
логическое НЕ |
Команды побитового сдвига и вращения
SAR |
Арифметический
сдвиг вправо |
SHR |
Логический сдвиг
вправо |
SAL/SHL |
Арифметический/логический
сдвиг влево |
SHRD |
Двойной сдвиг вправо |
SHLD |
Двойной сдвиг
влево |
ROR |
Вращение вправо |
ROL |
Вращение влево |
RCR |
Вращение вправо через
флаг переноса |
RCL |
Вращение влево через
флаг переноса |
Команды работы с битами и байтами
BT |
Проверка бита |
BTS |
Проверка и
установка бита |
BTR |
Проверка и сброс
бита |
BTC |
Проверка и
инверсия бита |
BSF |
Проверка бита в
прямом направлении |
BSR |
Проверка бита в обратном
направлении |
SETxx |
Установить
значение байта в зависимости от флага |
TEST |
Логическое
сравнение |
Команды передачи управления
JMP |
Безусловный
переход |
Jxx |
Условный переход |
JCXZ/JECXZ |
Переход, если cx/ecx равен 0 |
|
Цикл со счетчиком
в ecx |
LOOPZ/LOOPE |
Цикл со счетчиком
в ecx и выходом при нуле / равенстве |
LOOPNZ/LOOPNE |
Цикл со счетчиком
в ecx и выходом при не нуле / неравенстве |
CALL |
Вызов подпрограммы |
RET |
Возврат из
подпрограммы |
IRET |
Возврат из
прерывания |
INT |
Вызов программного
прерывания |
INTO |
Вызов прерывания
по переполнению |
BOUND |
Переход при выходе
значения за заданные рамки |
ENTER |
Высокоуровневый
вход в процедуру |
LEAVE |
Высокоуровневый
выход из процедуры |
Команды работы со строками (последовательностями)
MOVS |
Перемещение строки |
MOVSB |
Перемещение строки
байтов |
MOVSW |
Перемещение строки
слов |
MOVSD |
Перемещение строки
двойных слов |
CMPS |
Сравнение строки |
CMPSB |
Сравнение строки
байтов |
CMPSW |
Сравнение строки
слов |
CMPSD |
Сравнение строки
двойных слов |
SCAS |
Проверка строки |
SCASB |
Проверка строки
байтов |
SCASW |
Проверка строки
слов |
SCASD |
Проверка строки
двойных слов |
LODS |
Чтение строки |
LODSB |
Чтение строки
байтов |
LODSW |
Чтение строки слов |
LODSD |
Чтение строки
двойных слов |
STOS |
Запись строки |
STOSB |
Запись строки
байтов |
STOSW |
Запись строки слов |
STOSD |
Запись строки
двойных слов |
REP |
Префикс
повторения: пока ecx не равен 0 |
REPE/REPZ |
Префикс
повторения: пока равно / ноль |
REPNE/REPNZ |
Префикс
повторения: пока не равно / не ноль |
INS |
Чтение из порта
строки |
INSB |
Чтение из порта
строки байтов |
INSW |
Чтение из порта
строки слов |
INSD |
Чтение из порта
строки двойных слов |
OUT |
Запись в порт
строки |
OUTB |
Запись в порт
строки байтов |
OUTW |
Запись в порт
строки слов |
OUTD |
Запись в порт
строки двойных слов |
Команды управления флагами
STC |
Установить флаг
переноса |
CLC |
Очистить флаг
переноса |
CMC |
Инвертировать флаг
переноса |
CLD |
Очистить флаг
направления |
STD |
Установить флаг
направления |
LAHF |
Загрузить флаги в ah |
SAHF |
Записать ah в флаги |
PUSHF/PUSHFD |
Поместить EFLAGS в
стек |
POPF/POPFD |
Взять EFLAGS из
стека |
STI |
Установить флаг
прерывания |
CLI |
Очистить флаг
прерывания |
Команды работы с сегментными регистрами
LDS |
Загрузить дальний
указатель используя ds |
LES |
Загрузить дальний
указатель используя es |
LFS |
Загрузить дальний
указатель используя fs |
LGS |
Загрузить дальний
указатель используя gs |
LSS |
Загрузить дальний
указатель используя ss |
Дополнительные команды
LEA |
Загрузить
эффективный адрес |
NOP |
Нет операции |
UD2 |
Неопределенная
инструкция |
XLAT/XLATB |
Табличная
трансляция |
CPUID |
Идентификация
процессора |
Условия
в различных условных командах (CMOVxx, SETxx, Jxx)
Обозначение в
командах |
Флаги |
Условие |
a / nbe |
CF=0 и ZF=0 |
"выше" или "не ниже или равно" |
ae / nb / nc |
CF=0 |
"выше или равно" или "не ниже" или "нет переноса" |
b / nae / c |
CF=1 |
"ниже" или "не выше или равно" или "есть перенос" |
be / na |
CF=1 или ZF=1 |
"ниже или равно" или "не выше" |
e / z |
ZF=1 |
"равно" или "ноль" |
ne / nz |
ZF=0 |
"не равно" или "не ноль" |
g / nle |
ZF=0 и SF=OF |
"больше" или "не меньше или равно" |
ge / nl |
SF=OF |
"больше или равно" или "не меньше" |
l / nge |
SF≠OF |
"меньше" или "не больше или равно" |
le / ng |
ZF=0 или SF≠OF |
"меньше или равно" или "не больше" |
no |
OF=0 |
"нет переполнения" |
o |
OF=1 |
"есть переполнение" |
np / po |
PF=0 |
"нет четности" или "нечетное" |
p / pe |
PF=1 |
"есть четность" или "четное" |
ns |
SF=0 |
"нет знака" |
s |
SF=1 |
"есть знак" |
Системные команды
LGDT |
Загрузить регистр
глобальной таблицы дескрипторов (GDT) |
SGDT |
Сохранить регистр
глобальной таблицы дескрипторов (GDT) |
LLDT |
Загрузить регистр
локальной таблицы дескрипторов (GDT) |
SLDT |
Сохранить регистр локальной
таблицы дескрипторов (GDT) |
LTR |
Загрузить регистр
задачи |
STR |
Сохранить регистр
задачи |
LIDT |
Загрузить регистр
таблицы дескрипторов прерываний (IDT) |
SIDT |
Сохранить регистр
таблицы дескрипторов прерываний (IDT) |
MOV |
Загрузка и
сохранение управляющих регистров, отладочных регистров |
LMSW |
Загрузить слово
состояния машины |
SMSW |
Сохранить слово
состояния машины |
CLTS |
Очистить флаг
переключения задачи |
ARPL |
Согласовать
запрошенный уровень привилегий |
LAR |
Загрузить права
доступа |
LSL |
Загрузить границу
сегмента |
VERR |
Проверить сегмент
на возможность чтения |
VERW |
Проверить сегмент
на возможность записи |
INVD |
Очистить кэш без
обратной записи |
WBINVD |
Очистить кэш с
обратной записью |
INVLPG |
Очистить элемент
TLB |
LOCK |
Префикс:
заблокировать шину |
HLT |
Остановить
процессор |
RSM |
Возвратиться из
режима системного управления |
RDMSR |
Прочитать регистр,
специфичный для модели |
WRMSR |
Записать в
регистр, специфичный для модели |
RDPMC |
Прочитать счетчик
производительности |
RDTSC |
Прочитать счетчик
меток реального времени |
SYSENTER |
Быстрый переход к
точке входа в коде на уровне привилегий 0 |
SYSEXIT |
Быстрый возврат из
кода на уровне привилегий 0 к коду на уровне 3 |
Команды сопроцессора (x87
FPU)
Команды передачи данных
FLD |
Загрузить
вещественное число |
FST |
Записать вещественное
число |
FSTP |
Записать и
вытолкнуть вещественное число |
FILD |
Загрузить целое
число |
FIST |
Записать целое
число |
FISTP |
Записать и
вытолкнуть целое число |
FBLD |
Загрузить число
BCD |
FBSTP |
Записать и
вытолкнуть число BCD |
FXCH |
Поменять регистры
местами |
FCMOVE |
Вещественное
условное присваивание, если равно |
FCMOVNE |
Вещественное
условное присваивание, если не равно |
FCMOVB |
Вещественное
условное присваивание, если меньше |
FCMOVBE |
Вещественное
условное присваивание, если меньше или равно |
FCMOVNB |
Вещественное условное
присваивание, если не меньше |
FCMOVNBE |
Вещественное
условное присваивание, если не меньше или равно |
FCMOVU |
Вещественное
условное присваивание, если несравнимы |
FCMOVNU |
Вещественное
условное присваивание, если не несравнимы |
Базовые арифметические команды
FADD |
Сложение с
вещественным числом |
FADDP |
Сложение с
вещественным числом с выталкиванием |
FIADD |
Сложение с целым
числом |
FSUB |
Вычитание
вещественного числа |
FSUBP |
Вычитание
вещественного числа с выталкиванием |
FISUB |
Вычитание целого
числа |
FSUBR |
Обратное вычитание
вещественного числа |
FSUBRP |
Обратное вычитание
вещественного числа с выталкиванием |
FISUBR |
Обратное вычитание
целого числа |
FMUL |
Умножение
вещественного числа |
FMULP |
Умножение
вещественного числа с выталкиванием |
FIMUL |
Умножение целого
числа |
FDIV |
Деление
вещественного числа |
FDIVP |
Деление
вещественного числа с выталкиванием |
FIDIV |
Деление целого
числа |
FDIVR |
Обратное деление
вещественного числа |
FDIVRP |
Обратное деление
вещественного числа с выталкиванием |
FIDIVR |
Обратное деление
целого числа |
FPREM |
Вычисление остатка
от деления |
FPREM1 |
Вычисление остатка
от деления (по стандарту IEEE) |
FABS |
Модуль числа |
FCHS |
Смена знака числа |
FRNDINT |
Округление до
целого |
FSCALE |
Умножение на
степень двойки |
FSQRT |
Квадратный корень |
FXTRACT |
Разложение вещественного
числа на мантиссу и экспоненту |
Команды сравнения
FCOM |
Вещественное
сравнение |
FCOMP |
Вещественное
сравнение с выталкиванием |
FCOMPP |
Вещественное
сравнение с двойным выталкиванием |
FUCOM |
Неупорядоченное
вещественное сравнение |
FUCOMP |
Неупорядоченное
вещественное сравнение с выталкиванием |
FUCOMPP |
Неупорядоченное
вещественное сравнение с двойным выталкиванием |
FICOM |
Сравнение с целым
числом |
FICOMP |
Сравнение с целым
числом с выталкиванием |
FCOMI |
Вещественное
сравнение с установкой EFLAGS |
FUCOMI |
Неупорядоченное
вещественное сравнение с установкой EFLAGS |
FCOMIP |
Вещественное
сравнение с установкой EFLAGS и выталкиванием |
FUCOMIP |
Неупорядоченное
вещественное сравнение с установкой EFLAGS и выталкиванием |
FTST |
Проверка
вещественного числа (сравнение с 0) |
FXAM |
Определить класс
вещественного числа |
Команды трансцендентных операций
FSIN |
Синус |
FCOS |
Косинус |
FSINCOS |
Синус и косинус |
FPTAN |
Частичный тангенс |
FPATAN |
Частичный
арктангенс |
F2XM1 |
2x-1 |
FYL2X |
y*log2x |
FYL2XP1 |
y*log2(x+1) |
Загрузка констант
FLD1 |
Загрузить число +1.0 |
FLDZ |
Загрузить число +0.0 |
FLDPI |
Загрузить число π |
FLDL2E |
Загрузить число
log2e |
FLDLN2 |
Загрузить число
loge2 |
FLDL2T |
Загрузить число
log210 |
FLDLG2 |
Загрузить число
log102 |
Команды управления сопроцессором
FINCSTP |
Увеличить
указатель вершины стека сопроцессора |
FDECSTP |
Уменьшить
указатель вершины стека сопроцессора |
FFREE |
Освободить
вещественный регистр |
FINIT |
Инициализировать
сопроцессор после проверки на ошибку |
FNINIT |
Инициализировать
сопроцессор без проверки на ошибку |
FCLEX |
Очистить флаги
исключений сопроцессора после проверки на ошибку |
FNCLEX |
Очистить флаги
исключений сопроцессора без проверки на ошибку |
FSTCW |
Сохранить регистр
управления сопроцессора после проверки на ошибку |
FNTSCW |
Сохранить регистр
управления сопроцессора без проверки на ошибку |
FLDCW |
Загрузить регистр
управления сопроцессора |
FSTENV |
Сохранить
окружение сопроцессора после проверки на ошибку |
FNSTENV |
Сохранить
окружение сопроцессора без проверки на ошибку |
FLDENV |
Загрузить
окружение сопроцессора |
FSAVE |
Сохранить состояние
сопроцессора после проверки на ошибку |
FNSAVE |
Сохранить
состояние сопроцессора без проверки на ошибку |
FRSTOR |
Восстановить
состояние сопроцессора |
FSTSW |
Сохранить регистр
состояния сопроцессора после проверки на ошибку |
FNSTSW |
Сохранить регистр
состояния сопроцессора без проверки на ошибку |
WAIT/FWAIT |
Ждать завершения
работы сопроцессора |
FNOP |
Нет операции
сопроцессора |
Команды управления состоянием сопроцессора и SIMD
FXSAVE |
Сохранить
состояние сопроцессора и блока SIMD |
FXRSTOR |
Восстановить состояние
сопроцессора и блока SIMD |
Команды
блока MMX
Команда |
Описание |
EMMS |
Подготовка сопроцессора к исполнению команд |
MASKMOVQ |
Запись байт в память из регистра MMX по маске (выборочная) |
MOVD |
Перемещение двойного слова |
MOVNTQ |
Запись 64 бит в память из регистра MMX (без использования кэш-памяти) |
MOVQ |
Переместить учетверенное слово (64 бит) |
PACKSSWD |
Упаковка со знаковым насыщением слов в байты |
PACKSSDW |
Упаковка со знаковым насыщением двойных слов в слова |
PACKUSWB |
Упаковка с беззнаковым насыщением слов в байты |
PADDB |
Сложение упакованных байт |
PADDW |
Сложение упакованных слов |
PADDD |
Сложение упакованных двойных слов |
PADDSB |
Сложение упакованных байт со знаковым насыщением |
PADDSW |
Сложение упакованных слов со знаковым насыщением |
PADDUSB |
Сложение упакованных байт с беззнаковым насыщением |
PADDUSW |
Сложение упакованных слов с беззнаковым насыщением |
PAND |
Упакованное логическое И |
PANDN |
Упакованное логическое И-НЕ |
PAVGB |
Упакованное среднее (байт) |
PAVGW |
Упакованное среднее (слов) |
PCMPEQB |
Сравнение на равенство упакованных байт |
PCMPEQW |
Сравнение на равенство упакованных слов |
PCMPEQD |
Сравнение на равенство упакованных двойных слов |
PCMPGTB |
Сравнение по условию "больше чем" упакованных байт |
PCMPGTW |
Сравнение по условию "больше чем" упакованных слов |
PCMPGTD |
Сравнение по условию "больше чем" упакованных двойных слов |
PEXTRW |
Извлечение 16-битного слова из регистра MMX по маске |
PINSRW |
Вставка 16-битного слова в регистр MMX |
PMADDWD |
Упакованное знаковое умножение слов операндов с последующим сложением промежуточных результатов в двойном слове |
PMAXSW |
Возврат максимальных упакованных знаковых слов |
PMAXUB |
Возврат максимальных упакованных беззнаковых байт |
PMINSW |
Возврат минимальных упакованных знаковых слов |
PMINUB |
Возврат минимальных упакованных беззнаковых байт |
PMOVMSKB |
Перемещение байтовой знаковой маски в целочисленный регистр |
PMULHUW |
Упакованное беззнаковое умножение слов с возвратом старшего слова результата |
PMULHW |
Упакованное знаковое умножение слов с возвратом старшего слова результата |
PMULLW |
Упакованное знаковое умножение слов с возвратом младшего слова результата |
POR |
Упакованное логическое ИЛИ |
PSADBW |
Суммарная разница значений пар беззнаковых упакованных байт |
PSHUFW |
Перераспределение упакованных слов |
PSLLW |
Логический сдвиг влево упакованных слов |
PSLLD |
Логический сдвиг влево упакованных двойных слов |
PSLLQ |
Логический сдвиг влево упакованных учетверенных слов |
PSRAW |
Арифметический сдвиг вправо упакованных слов |
PSRAD |
Арифметический сдвиг вправо упакованных двойных слов |
PSRLW |
Логический сдвиг вправо упакованных слов |
PSRLD |
Логический сдвиг вправо упакованных двойных слов |
PSRLQ |
Логический сдвиг вправо упакованных учетверенных слов |
PSUBB |
Вычитание упакованных байт |
PSUBW |
Вычитание упакованных слов |
PSUBD |
Вычитание упакованных двойных слов |
PSUBSB |
Вычитание упакованных байт со знаковым насыщением |
PSUBSW |
Вычитание упакованных слов со знаковым насыщением |
PSUBUSB |
Вычитание упакованных байт с беззнаковым насыщением |
PSUBUSW |
Вычитание упакованных слов с беззнаковым насыщением |
PUNPCKHBW |
Распаковка старших упакованных байт в слова |
PUNPCKHWD |
Распаковка старших упакованных слов в двойные слова |
PUNPCKHDQ |
Распаковка старших упакованных двойных слов в учетверенные слова |
PUNPCKLBW |
Распаковка младших упакованных байт в слова |
PUNPCKLWD |
Распаковка младших упакованных слов в двойные слова |
PUNPCKLDQ |
Распаковка младших упакованных двойных слов в учетверенные слова |
PXOR |
Упакованное логическое исключающее ИЛИ |
Команды
блока XMM
Команды
SSE
Команда |
Описание |
ADDPS |
Векторное сложение Float |
ADDSS |
Скалярное сложение Float |
ANDNPS |
Поразрядное логическое И-НЕ над Float |
ANDPS |
Поразрядное логическое И над Float |
CMPPS |
Векторное сравнение Float |
CMPSS |
Скалярное сравнение Float |
COMISS |
Скалярное упорядоченное сравнение с установкой EFLAGS |
CVTPI2PS |
Преобразование двух упакованных DWord в два упакованных Float |
CVTPS2PI |
Преобразование двух упакованных Float в два упакованных DWord |
CVTSI2SS |
Скалярное преобразование знакового DWord в Float |
CVTSS2SI |
Скалярное преобразование Float в знаковое DWord |
CVTTPS2PI |
Преобразование усечением двух Float в два знаковых DWord |
CVTTSS2SI |
Скалярное преобразование усечением Float в знаковое DWord |
DIVPS |
Векторное деление Float |
DIVSS |
Скалярное деление Float |
FXRSTOR |
Восстановление без проверки наличия незамаскированных исключений с плавающей точкой состояния сопроцессора, целочисленного и потокового MMX-расширений из памяти |
FXSAVE |
Сохранение состояния сопроцессора, целочисленного и потокового MMX-расширений в памяти |
LDMXCSR |
Загрузка регистра состояния/управления MXCSR из памяти |
MAXPS |
Вычисление максимальных упакованных значений Float |
MAXSS |
Скалярное вычисление максимального значения Float |
MINPS |
Вычисление минимальных упакованных значений Float |
MINSS |
Скалярное вычисление минимального значения Float |
MOVAPS |
Перемещение выровненных 128 бит |
MOVHLPS |
Перемещение верхних упакованных значений Float в нижние |
MOVHPS |
Перемещение верхних упакованных значений Float |
MOVLHPS |
Перемещение нижних упакованных значений Float в верхние |
MOVLPS |
Перемещение невыровненных нижних упакованных значений Float |
MOVMSKPS |
Перемещение знаковой маски в целочисленный регистр |
MOVNTPS |
Запись в память 128 бит из регистра XMM, минуя кэш |
MOVSS |
Скалярное перемещение Float |
MOVUPS |
Перемещение невыровненных упакованных Float |
MULPS |
Векторное умножение Float |
MULSS |
Скалярное умножение Float |
ORPS |
Поразрядное логическое ИЛИ над Float |
RCPPS |
Векторное вычисление обратных значений Float |
RCPSS |
Скалярное вычисление обратного значения Float |
RSQRTPS |
Векторное вычисление обратного значения квадратного корня Float |
RSQRTSS |
Скалярное вычисление обратного значения квадратного корня Float |
SHUFPS |
Перераспределение упакованных значений Float |
SQRTPS |
Векторное вычисление квадратного корня Float |
SQRTSS |
Скалярное вычисление квадратного корня Float |
STMXCSR |
Сохранение регистра управления/состояния MXCSR в памяти |
SUBPS |
Векторное вычитание Float |
SUBSS |
Скалярное вычитание Float |
UCOMISS |
Неупорядоченное скалярное сравнение с установкой флагов в EFLAGS |
UNPCKHPS |
Перенос верхних упакованных значений Float с чередованием |
UNPCKLPS |
Перенос нижних упакованных значений Float с чередованием |
XORPS |
Поразрядное логическое исключающее ИЛИ над Float |
Команды SSE2
Команда |
Описание |
ADDPD |
Векторное сложение Double |
ADDSD |
Скалярное сложение Double |
ANDPD |
Поразрядное логическое И над Double |
ANDNPD |
Поразрядное логическое И-НЕ над Double |
CLFLUSH |
Сброс в память строки кэша, содержащей адрес |
CMPPD |
Векторное сравнение Double |
CMPSD |
Скалярное сравнение Double |
COMISD |
Скалярное сравнение упорядоченных значений и установка EFLAGS |
CVTDQ2PD |
Преобразование двух упакованных DWord в два Double |
CVTDQ2PS |
Преобразование четырех упакованных знаковых DWord в четыре упакованных Float |
CVTPD2DQ |
Преобразование двух упакованных Double в два упакованных DWord |
CVTPD2PI |
Преобразование двух упакованных Double в два упакованных DWord |
CVTPD2PS |
Преобразование двух упакованных Float в два упакованных Double |
CVTSD2SI |
Преобразование скалярного Double в DWord |
CVTSD2SS |
Преобразование скалярного Double в Float |
CVTSI2SD |
Преобразование скалярного DWord в Double |
CVTSS2SD |
Преобразование скалярного Float в Double |
CVTTPD2PI |
Преобразование усечением двух упакованных Double в два DWord |
CVTTPD2DQ |
Преобразование усечением двух упакованных Double в два DWord |
CVTTPS2DQ |
Преобразование усечением четырех упакованных Float в четыре знаковых DWord |
CVTTSD2SI |
Преобразование усечением скалярного Double в Float |
DIVPD |
Векторное деление Double |
DIVSD |
Скалярное деление Double |
LFENCE |
Упорядочить операции загрузки |
MASKMOVDQU |
Выборочная запись байт из источника в память |
MAXPD |
Вычисление максимальных упакованных значений Double |
MAXSD |
Скалярное вычисление максимального значения Double |
MFENCE |
Упорядочить операции загрузки и сохранения |
MINPD |
Вычисление минимальных упакованных значений Double |
MINSP |
Скалярное вычисление минимального значения Double |
MOVAPD |
Перемещение упакованных выровненных Double |
MOVD |
Перемещение DWord |
MOVDQA |
Перемещение выровненных 128 бит |
MOVDQU |
Перемещение невыровненных 128 бит |
MOVDQ2Q |
Перемещение младшего QWord |
MOVHPD |
Перемещение старшего упакованного Double |
MOVLPD |
Перемещение младшего упакованного Double |
MOVMSKPD |
Извлечение 2-битной знаковой маски упакованных Double |
MOVNTDQ |
Сохранение двух QWord в память без использования кэша |
MOVNTI |
Сохранение DWord из регистра общего назначения в память без использования кэша |
MOVNTPD |
Сохранение двух Double в память без использования кэша |
MOVQ |
Перемещение QWord |
MOVQ2DQ |
Перемещение QWord из MMX-регистра в младшее QWord XMM-регистра |
MOVSD |
Перемещение скалярного Double |
MOVUPD |
Перемещение невыровненных упакованных Double |
MULPD |
Векторное умножение Double |
MULSD |
Скалярное умножение Double |
ORPD |
Поразрядное логическое ИЛИ над Double |
PACKSSWB |
Упаковка со знаковым насыщением слов в байты |
PACKSSDW |
Упаковка со знаковым насыщением двойных слов в слова |
PACKUSWB |
Упаковка с беззнаковым насыщением слов в байты |
PADDB |
Сложение упакованных байт |
PADDW |
Сложение упакованных слов (Word) |
PADDD |
Сложение упакованных двойных слов (DWord) |
PADDQ |
Сложение учетверенных слов (QWord) |
PADDSB |
Сложение упакованных байт со знаковым насыщением |
PADDSW |
Сложение упакованных слов со знаковым насыщением |
PADDUSB |
Сложение упакованных байт с беззнаковым насыщением |
PADDUSW |
Сложение упакованных слов с беззнаковым насыщением |
PAND |
Упакованное логическое И |
PANDN |
Упакованное логическое И-НЕ |
PAUSE |
Улучшить выполнение цикла ожидания-занятости |
PAVGB |
Упакованное среднее байт |
PAVGW |
Упакованное среднее слов |
PCMPEQB |
Сравнение на равенство упакованных байт |
PCMPEQW |
Сравнение на равенство упакованных слов |
PCMPEQD |
Сравнение на равенство упакованных двойных слов |
PCMPGTB |
Сравнение по условию "больше чем" упакованных байт |
PCMPGTW |
Сравнение по условию "больше чем" упакованных слов |
PCMPGTD |
Сравнение по условию "больше чем" упакованных двойных слов |
PEXTRW |
Извлечение 16-битного слова из XMM-регистра |
PINSRW |
Вставка 16-битного слова в регистр XMM |
PMADDWD |
Упакованное знаковое умножение слов с последующим сложением промежуточных результатов в DWord |
PMAXSW |
Возврат максимальных упакованных знаковых слов |
PMAXUB |
Возврат максимальных упакованных беззнаковых байт |
PMINSW |
Возврат минмальных упакованных знаковых слов |
PMINUB |
Возврат минимальных упакованных беззнаковых байт |
PMOVMSKB |
Перемещение байтовой знаковой маски в целочисленный регистр |
PMULHUW |
Упакованное беззнаковое умножение слов с возвратом старших слов результата |
PMULHW |
Упакованное знаковое умножение слов с возвратом старших слов результата |
PMULLW |
Упакованное знаковое умножение слов с возвратом младших слов результата |
PMULUDQ |
Умножение DWord и сохранение результата в XMM-регистре. |
POR |
Упакованное логическое ИЛИ |
PSADBW |
Суммарная разница значений пар беззнаковых упакованных байт |
PSHUFD |
Перераспределение упакованных двойных слов |
PSHUFHW |
Перераспределение упакованных слов в старших DWord |
PSHUFLW |
Перераспределение упакованных слов в младших DWord |
PSLLDQ |
Побайтный сдвиг влево |
PSLLW |
Логический сдвиг слов влево |
PSLLD |
Логический сдвиг двойных слов влево |
PSLLQ |
Логический сдвиг учетверенных слов влево |
PSRAW |
Арифметический сдвиг слов влево |
PSRAD |
Арифметический сдвиг двойных слов влево |
PSRLDQ |
Побайтный сдвиг вправо |
PSRLW |
Логический сдвиг слов вправо |
PSRLD |
Логический сдвиг двойных слов вправо |
PSRLQ |
Логический сдвиг учетверенных слов вправо |
PSUBB |
Вычитание упакованных байт |
PSUBW |
Вычитание упакованных слов |
PSUBD |
Вычитание упакованных двойных слов |
PSUBQ |
Вычитание учетверенных слов |
PSUBSB |
Вычитание упакованных слов со знаковым насыщением |
PSUBSW |
Вычитание упакованных двойных слов со знаковым насыщением |
PSUBUSB |
Вычитание упакованных байт с беззнаковым насыщением |
PSUBUSW |
Вычитание упакованных слов с беззнаковым насыщением |
PUNPCKHBW |
Распаковка старших упакованных байт в слова |
PUNPCKHWD |
Распаковка старших упакованных слов в двойные слова |
PUNPCKHDQ |
Распаковка старших упакованных двойных слов в учетверенные слова |
PUNPCKHQDQ |
Распаковка старших упакованных учетверенных слов в двойные учетверенные слова |
PUNPCKLBW |
Распаковка младших упакованных байт в слова |
PUNPCKLWD |
Распаковка младших упакованных слов в двойные слова |
PUNPCKLDQ |
Распаковка младших упакованных двойных слов в учетверенные слова |
PUNPCKLQDQ |
Распаковка младших упакованных учетверенных слов в двойные учетверенные слова |
PXOR |
Упакованное логическое исключающее ИЛИ |
SHUFPD |
Перестановка упакованных значений Double |
SQRTPD |
Векторное вычисление квадратного корня Double |
SQRTSD |
Скалярное вычисление квадратного корня Double |
SUBPD |
Векторное вычитание Double |
SUBSD |
Скалярное вычитание Double |
UCOMISD |
Неупорядоченное скалярное сравнение Double с установкой флагов в EFLAGS |
UNPCKHPD |
Перенос верхних упакованных значений Double с чередованием |
UNPCKLPD |
Перенос нижних упакованных значений Double с чередованием |
XORDP |
Поразрядное логическое исключающее ИЛИ над Double |
Команды SSE3
Команда |
Описание |
FISTTP |
сохранение целочисленного значения с выталкиванием из
стека x87 с округлением в сторону нуля |
MOVSLDUP |
загрузка 4-х упакованных float с
дублированием 1-го и 3-го элементов |
MOVHLDUP |
загрузка 4-х упакованных float с
дублированием 2-го и 4-го элементов |
MOVDDUP |
загрузка 64-битного числа в 128-битное с дублированием |
LDDQU |
загрузка невыровненных 128 бит |
ADDSUBPS |
сложение 2-х и 4-х упакованных float
и вычитание 1-х и 3-х |
ADDSUBPD |
сложение 1-х упакованных double
и вычитание вторых |
HADDPS |
горизонтальное сложение упакованных float |
HSUBPS |
горизонтальное вычитание упакованных float |
HADDPD |
горизонтальное сложение упакованных double |
HSUBPD |
горизонтальное вычитание упакованных double |
MONITOR |
устанавливает диапазон адресов, по которому будет
отслеживаться записи по протоколу write-back |
MWAIT |
вводит процессор в режим низкого энергопотребления при
ожидании записей по протоколу write-back по
заданному диапазону адресов |
Команды
расширения 3DNow!
Команды
3DNow!
Команда |
Описание |
FEMMS |
Подготовка сопроцессора к выполнению команд |
PAVGUSB |
Вычисление округленного среднего значения восьми пар упакованных беззнаковых байт операндов |
PF2ID |
Преобразование упакованного вещественного в упакованное целое |
PFACC |
Вещественное накопление |
PFADD |
Сложение упакованных Float |
PFCMPEQ |
Сравнение на равенство упакованных Float |
PFCMPGE |
Сравнение на "больше или равно" упакованных Float |
PFCMPGT |
Сравнение на "больше" упакованных Float |
PFMAX |
Максимум упакованных Float |
PFMIN |
Минимум упакованных Float |
PFMUL |
Умножение упакованных Float |
PFRCP |
Приближенное значение обратной величины упакованных Float |
PFRCPIT1 |
Первый итеративный шаг вычисления обратной величины упакованных Float |
PFRCPIT2 |
Второй итеративный шаг вычисления обратной величины упакованных Float |
PFRSQRT1 |
Первый итеративный шаг вычисления квадратного корня упакованных Float |
PFRSQRT |
Приближенное значение квадратного корня упакованных Float |
PFSUB |
Упакованное вычитание двух пар элементов Float |
PFSUBR |
Упакованное обратное вычитание двух пар элементов Float |
PI2FD |
Преобразование упакованных DWord в упакованные Float |
PMULHRW |
Умножение с округлением упакованных знаковых слов с сохранением старших 16 бит результата |
PREFETCH |
Предвыборка данных из памяти в кэш данных L1 |
PREFETCHW |
Предвыборка данных из памяти в кэш данных L1 |
Команды
3DNow! Ext.
Команда |
Описание |
PI2WI |
Преобразование с усечением и расширением знака упакованных Float в упакованные слова |
PFNACC |
Отрицательное накопление упакованных Float |
PFPNACC |
Смешанное отрицательное и положительное накопление упакованных Float |
PI2FW |
Преобразование упакованных слов в упакованные Float |
PSWAPD |
Перестановка младшего и старшего DWord |
Также в расширение входят команды: MASKMOVQ, MOVNTQ, PAVGB, PAVGW, PEXTRW, PINSRW, PMAXSW, PMAXUB, PMINSW, PMINUB, PMOVMSKB, PMULHUW, PREFETCHNTA, PREFETCHT0, PREFETCHT1, PREFETCHT2, PSADBW, PSHUFW, SFENCE. Они полностью совпадают с аналогичными командами MMX.
Команды архитектуры x86-64
Архитектура x86-64 поддерживает весь приведенный выше набор команд архитектуры x86 (включая расширения MMX, SSE, SSE2, 3DNow!, исключая SSE3), расширяя некоторые инструкции для использования 64-битных операндов. Дополнительно вводятся две новые инструкции:
Команда |
Описание |
MOVSXD |
Пересылка DWord в QWord со знаковым расширением |
SWAPGS |
Быстрая загрузка адреса системных структур данных |