Дополнительные команды

Сейчас мы рассмотрим еще одну группу команд, которые трудно отнести к какому-либо определенному типу, но которые являются весьма полезными при разработке программ.

Мнемоника Описание
PAVGB Packed AveraGe Bytes Попарно вычисляет средние значения упакованных чисел, представленных байтами. Значения операндов интерпретируются как беззнаковые целые числа. В качестве источника могут выступать ММХ-регистр или 64-разрядная ячейка памяти, приемником служит один из ММХ-регистров.
PAVGW Packed AveraGe Words Попарно вычисляет средние значение упакованных чисел, представленных словами. Значения операндов интерпретируются как беззнаковые целые числа. В качестве источника могут выступать ММХ-регистр или 64-разрядная ячейка памяти, приемником служит один из ММХ-регистров.
PEXTRW Packed EXTRact Word Извлекает одно из 4 упакованных слов входного операнда. Команда имеет три аргумента: источние, приемник и маска. Младшие два бита маски задают в источнике номер упакованного слова, подлежащего извлечению. Извлеченное слово сохраняется в младшем слове приемника. Приемником этой команды может выступать один из 32-разрядных регистров общего назначения. Старшее слово приемника обнуляется.
PINSRW Packed INSeRt Word Вставляет слово в одно из 4 упакованных слов приемника. Приемником является один из ММХ-регистров, а источником может выступать один из 32-разрядных регистров общего назначения, младшее слово которого будет вставлено в приемник. Номер позиции, куда помещается операнд, определяется младшими двумя битами маски и может принимать значения от 0 до 3;
PMAXUB Packed MAXimum Unsigned integer Byte Извлекает максимальное значение из каждой пары упакованных элементов в приемнике и источнике. Операция выполняется над беззнаковыми байтами . В качестве приемника может выступать ММХ-регистр, а в качестве источника — ММХ-регистр или 64-разрядная ячейка памяти.
PMAXSW Packed MAXimum Signed integer Word Извлекает максимальное значение из каждой пары упакованных элементов в приемнике и источнике. Операция выполняется над знековыми словами. В качестве приемника может выступать ММХ-регистр, а в качестве источника — ММХ-регистр или 64-разрядная ячейка памяти.
PMINUB Packed MINimum Unsigned integer Byte Извлекает минимальное значение из каждой пары упакованных элементов в приемнике и источнике. Операция выполняется над беззнаковыми байтами . В качестве приемника может выступать ММХ-регистр, а в качестве источника — ММХ-регистр или 64-разрядная ячейка памяти.
PMINSW Packed MINmum Signed integer Word Извлекает минимальное значение из каждой пары упакованных элементов в приемнике и источнике. Операция выполняется над знековыми словами. В качестве приемника может выступать ММХ-регистр, а в качестве источника — ММХ-регистр или 64-разрядная ячейка памяти.
PMOVMSKB Packed MOVe MaSK Byte to integer Формирует байтовую маску, содержащий знаковые биты 8 байтов, содержащихся в источнике, в качестве которого может выступать один из ММХ-регистров. Примником является 32-разрядный регистр общего назначения, младший байт которого будет содержать результат. Эта команда очень удобна для формирования условных ветвлений в программах.
PSADBV Packed Sum of Absolute Differences Вычисляет сумму абсолютных значений разностей значений беззнаковых байтов источника и приемника. Источником могут выступать ММХ-регистр или 64-разрядная ячейка памяти, а приемником — один из ММХ-регистров.