Разделы:


Best links:

Система команд ммх-расширения

последовательность шагов:

·        получить старшие 16 бит произведения, используя команду pmulhw.

·        получить младшие 16 бит произведения, используя команду pmullw.

·        объединить частичные результаты в одно двойное слово с помощью команд punpckhwd и punpcklwd.

Команда  pmaddwd - попарное умножение 16-разрядных слов со знаком, находящихся в двух операндах. После получения в результате четырех 32-разрядных произведений первое произведение складывается со вторым, а третье - с четвертым. Суммы записываются в 32-разрядные слова выходного операнда. Работа команды pmaddwd ММ0,ММ1 проиллюстрирована на рис. 3.5.

ImageImage

         Рис. 3.5. Умножение по команде ppaddwd MM0,MM1

Команды сравнения попарно сравнивают элементы данных (байты, 16- или 32-разрядные слова) входного и выходного операндов и в зависимости от результата сравнения соответствующий элемент данных выходного операнда заполняется нулями либо единицами. Входным операндом могут выступать ММХ-регистр или ячейка памяти, а выходной операнд должен находиться в ММХ-регистре.

Команды pcmpeqb, pcmpeqw, pcmpeqd  заполняют элемент данных выходного операнда единицами, если соответствующие элементы равны и нулями, в противном случае.

Команды pcmpgtb, pcmpgtw, pcmpgtd заполняют элемент данных выходного операнда единицами, если соответствующий элемент данных выходного операнда больше соответствующего входного элемента и нулями, в противном случае.

Сдвиги и логические команды.

Команды сдвига выполняют сдвиг каждого элемента данных (16-, 32- или 64-разрядного слова) в выходном операнде на величину, задаваемую входным операндом. Входной операнд может быть непосредственным операндом либо находиться в ММХ-регистре или в памяти. Выходной операнд должен находиться в ММХ-регистре.

предыдущаяследующая