Инициализация
Классификация команд
Синтаксис ММХ-команд
Большинство команд в мнемонике имеют суффикс, который определяет тип данных и используемую арифметику:
· US (Unsigned Saturation) — арифметика с насыщением, данные без знака или, по-другому, беззнаковое насыщение. Если команда использует арифметику с насыщением и результат операции превышает максимальное представимое значение, то в выходной операнд записывается это максимальное значение (происходит «насыщение»). Аналогично, если результат операции оказался меньше нижней границы допустимого диапазона, то в выходной операнд записывается минимально возможное значение.
· S или SS (Signed Saturation) — арифметика с насыщением для данных со знаком (или знаковое насыщение).
· Если в суффиксе нет ни символа S ни символов SS, то применяется циклическая арифметика (wraparound). Если в этом случае результат операции выходит за двоичную разрядную сетку используемого типа данных, то «лишние» старшие биты результата отбрасываются.
|
|
· b, w, d, q — эти буквы в конце имени указывают тип данных. Если в суффиксе есть две из этих букв, то первая соответствует входному операнду, вторая — выходному.
Синтаксис MMX команд:
· Мнемоника приемник, источник
· Мнемоника приемник, источник, маска
· Мнемоника приемник
После обзора команды будут рассмотрены подробно.
Категория | Подкатегория | Команды |
Инициализация | EMMS | |
Передача данных | Пересылки | MOVD, MOVQ |
Упаковка данных | PACKSSWB, PACKSSDW – числа со знаком PACKUSWB – числа без знака | |
Распаковка данных | PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ – старшая половина PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ – младшая половина | |
Арифметика | Сложение Вычитание Умножение | PADD, PADDS, PADDUS PSUB, PSUBS, PSUBUS PMULHW, PMULLW, PMADDWD |
Логика | PAND, PANDN, POR, PXOR | |
Сдвиги | PSLLW, PSLLD, PSLLQ – логические влево PSRLW, PSRLD, PSRLQ – логические вправо PSRAW, PSRAD – арифметические (вправо) | |
Сравнения | PCMPEQB, PCMPEQW, PCMPEQD – на равенство PCMPGTB, PCMPGTW, PCMPGTD – на значение | |
Дополнительные | Вычисления | PAVGB, PAVDW - среднее значеие PSADBW – сумма разностей |
Извлечения | PEXTRW – извлечь слово PINSRW – вставить слово PMAXUB, PMAXSW – извлечь максимальное PMINUB, PMINSW – извлечь минимальное | |
Маска из знаков байтов | PMOVMSKB |
Команда | Описание |
EMMS | Empty MMx State Очистка стека регистров MMX. Установка всех единиц в слове тегов. |
Данные передаются между:
· регистрами MMX,
· регистром MMX и регистром основного процессора,
· регистром MMX и памятью.
Если размер приемника меньше размера источника, то лишние разряды обнуляются.
Команда | Описание |
MOVD приемник, источник | MOVe Double word – переместить двойное слово (32 разряда). |
MOVQ приемник, источник | MOVe Quarter word – переместить учетверенное слово (64 разряда). |