Empty MMx State
Очистка стека регистров MMX. Установка всех единиц в слове тегов.
Передача данных. Данные передаются между:
· регистрами MMX,
· регистром MMX и регистром основного процессора,
· регистром MMX и памятью.
Если размер приемника меньше размера источника, то лишние разряды обнуляются.
Команда
Описание
MOVD приемник, источник
MOVe Double word – переместить двойное слово (32 разряда).
MOVQ приемник, источник
MOVe Quarter word – переместить учетверенное слово (64 разряда).
Упаковка данных. ММХ-команды упаковки преобразуют длинные элементы данных A6- и 32-разрядные слова) в более короткие. Если исходное значение «не помещается» в коротком элементе данных, то происходит «насыщение» — результатом считается граничное значение допустимого диапазона выходного типа данных.
Мнемоника
Описание
PACKSSWB
PACK with Signed Saturation Words to Bytes
Упаковка со знаковым насыщением слов приемника (регистра MMX) источника (память или регистр MMX) в байты, расположенные в приемнике (регистре MMX). Пример:
Слова приемника MM0 упаковываются в байты младшей части применика MM0.
Слова источника MM1 упаковываются в байты старшей части применика MM0.
PACKUSWB
PACK with Unigned Saturation Words to Bytes
Упаковка с беззнаковым насыщением знаковых слов приемника (регистра MMX) источника (память или регистр MMX) в байты без знака, расположенные в приемнике (регистре MMX).
Отрицательные числа преобразуются в нули.
PACKSSDW
PACK with Signed Saturation Double words to Words
Упаковка со знаковым насыщением двойных слов приемника (регистра MMX) и источника (память или регистр MMX) в слова, расположенные в приемнике (регистре MMX). Пример:
Двойные слова приемника MM1 упаковываются в байты младшей части применика MM1.
Двойные слова источника MM2 упаковываются в байты старшей части применика MM1.
Распаковка данных. MMX-команды распаковки попарно объединяют элементы данных из обоих операндов в более длинные элементы выходного операнда. Этими командами можно пользоваться для увеличения числа значащих разрядов при вычислениях.
Мнемоника
Описание
PUNPCKHBW
P UNPaCK High packed Byfes to Words
Распаковывает старшие части приемника и источника в приемник. Происходит чередование в регистре назначения байт старшей половины источника с байтами старшей половины приемника.
Байты старшей половины приемника MM0 распаковываются в нечетные байты приемника MM1.
Байты старшей половины источника MM1 распаковываются в четные байты приемника MM0.
PUNPCKLBW
P UNPaCK Low packed Byfes to Words
Распаковывает младшие части приемника и источника в приемник. Происходит чередование в регистре назначения байт младшей половины источника с байтами младшей половины приемника. Пример:
PUNPCKHWD
P UNPaCK High packed Words to Double words
Распаковывает старшие части приемника и источника в приемник. Происходит чередование в регистре назначения слов старшей половины источника со словами старшей половины приемника.
PUNPCKLWD
P UNPaCK Low packed Words to Double words
Распаковывает младшие части приемника и источника в приемник. Происходит чередование в регистре назначения слов младшей половины источника со словами младшей половины приемника. Пример:
PUNPCKHDQ
P UNPaCK High packed Double words to Quad words.
Распаковывает старшие части приемника и источника в приемник. Происходит чередование в регистре назначения слов старшей половины источника со словами старшей половины приемника.
.
PUNPCKLDQ
P UNPaCK Low packed Double words to Quad words.
Распаковывает младшие части приемника и источника в приемник. Происходит чередование в регистре назначения двойных слов младшей половины источника с двойными словами младшей половины приемника. Пример:
Cложение и вычитание. ММХ-команды сложения и вычитания работают с упакованными байтами и словами со знаком и без знака, а также с упакованными двойными словами со знаком. Они могут использовать как циклическую арифметику, так и арифметику с насыщением.
Входной операнд – регистр MMX или память.
Выходной операнд – регистр MMX.
Мнемоника
Описание
PADDB
Packed ADDition Bytes
Сложение упакованных байт. без насыщения (с циклическим переполнением)
PADDW
Packed ADDition Words
Сложение упакованных слов. без насыщения (с циклическим переполнением).
PADDD
Packed ADDition Double words
Сложение упакованных двойных слов без насыщения (с циклическим переполнением).
PADDSB
Packed ADDition with sighed Saturation Bytes
Сложение упакованных байт со знаковым насыщением.
PADDSW
Packed ADDition with sighed Saturation Words
Сложение упакованных слов со знаковым насыщением.
PADDUSB
Packed ADDition with Unsighed Saturation Bytes
Сложение упакованных байт с беззнаковым насыщением.
PADDUSW
Packed ADDition with Unsighed Saturation Words
Сложение упакованных слов с беззнаковым насыщением. Пример;
Серым цветом выделено слово результата, в котором произошло насыщение.
PSUBB
Packed SUBtraction Bytes
Вычитание упакованных байт без насыщения (с циклическим антипереполнением).
PSUBW
Packed SUBtraction Words
Вычитание упакованных слов без насыщения (с циклическим антипереполнением).
SUBD
Packed SUBtraction Double words
Вычитание упакованных двойных слов без насыщения (с циклическим антипереполнением).
PSUBSB
Packed SUBtraction with signed Saturanion Bytes
Вычитание упакованных знаковых байт с насыщением.
PSUBSW
Packed SUBtraction with signed Saturanion Words
Вычитание упакованных знаковых слов с насыщением.
PSUBUSB
Packed SUBtraction with Unsigned Saturanion Bytes
Вычитание упакованных беззнаковых байт с насыщением.
PSUBUSW
Packed SUBtraction with Unsigned Saturanion Bytes
Вычитание упакованных беззнаковых слов с насыщением.
Умножение. ММХ-команды умножения попарно перемножают 16-разрядные слова операндов, что дает четыре 32-разрядных произведения. Все команды формируют результат по принципу циклической арифметики:
Мнемоника
Описание
PMULHW
Packed Multiplay and return High Words
Попарное умножение 4 знаковых слов источника (регистр MMX или память) на 4 знаковых слова приемника (регистр MMX).
Результатом операции являются 4 32-разрядных произведения, при этом старшие разряды произведений сохраняются в 16-разрядных словах приемника, а младшие разряды произведений теряются. Пример:
PMULLW
Packed Multiplay and return Low Words
Попарное умножение 4 знаковых слов источника (регистр MMX или память) на 4 знаковых слова приемника (регистр MMX).
Результатом операции являются 4 32-разрядных произведения, при этом младшие разряды произведений сохраняются в 16-разрядных словах приемника, а старшие разряды произведений теряются.
PMADDWD
Packed Multiplay and ADD Word to Double word
Попарное умножение 4 знаковых слов источника (регистр MMX или память) на 4 знаковых слова приемника (регистр MMX). Два двойных слова результатов умножения младших слов суммируются и записываются в младшее двойное слово операнда назначения. Два двойных слова результатов умножения старших слов суммируются и записываются в старшее двойное слово операнда назначения. Пример:
Логика. Логические ММХ-команды выполняют поразрядные логические операции над всеми 64 битами своих операндов. Они реализуют логические операции И, ИЛИ, И-НЕ, исключающего ИЛИ:
Мнемоника
Описание
PAND
Packed logical AND
Логическое "И".
PANDN
Packed logical AND and Not
Логическое "И-НЕ".
POR
Packed logical OR
Исключающее "ИЛИ".
PXOR
Packed logical eXclusive OR
Исключающее "ИЛИ".
Сдвиги. ММХ-команды сдвига выполняют сдвиг каждого элемента данных (16-, 32- или 64-разрядного слова) в приемнике на величину, задаваемую источником. Среди команд сдвига выделяют команды арифметического и логического сдвига. При выполнении команд арифметического сдвига освобождающиеся разряды элементов заполняются знаком числа (старший бит) и могут принимать значение как 0, так и 1, в то время как при выполнении команд логического сдвига освободившиеся разряды заполняются нулями.
Мнемоника
Описание
PSLLW
Packed Shift Left Logical Words
Логический сдвиг влево упакованных слов приемника на количество бит, указанных в источнике, с заполнением младших бит нулями.
PSLLD
Packed Shift Left Logical Double words
Логический сдвиг влево упакованных двойных слов приемника на количество бит, указанных в источнике, с заполнением младших бит нулями.
PSLLQ
Packed Shift Left Logical Quarter words
Логический сдвиг влево упакованного учетвернного слова приемника на количество бит, указанных в источнике, с заполнением младших бит нулями.
PSRLW
Packed Shift Right Logical Words
Логический сдвиг вправо упакованных слов приемника на количество бит, указанных в источнике, с заполнением старших бит нулями.
PSRLD
Packed Shift Right Logical Double words
Логический сдвиг вправо упакованных двойных слов приемника на количество бит, указанных в источнике, с заполнением старших бит нулями.
PSRLQ
Packed Shift Right Logical Quarter words
Логический сдвиг вправо упакованного учетверенного слова приемника на количество бит, указанных в источнике, с заполнением старших бит нулями.
PSRAW
Packed Shift Right Arithmetic Words
Арифметический сдвиг вправо упакованных знаковых слов приемника на количество бит, указанных в источнике, с заполнением освобождаюшихся бит битами знаковых разрядов.
PSRAD
Packed Shift Right Arithmetic Double words
Арифметический сдвиг вправо упакованных двойных знаковых слов премника на количество бит, указанных в источнике, с заполнением освобождаюшихся бит битами знаковых разрядов.
Сравнения. ММХ-команды сравнения попарно сравнивают элементы данных (байты, 16- или 32-разрядные слова) входного и выходного операндов. В зависимости от результата сравнения соответствующий элемент данных выходного операнда заполняется нулями либо единицами. Эти команды, как и все остальные ММХ-команды, не устанавливают флагов (признаков). В свою очередь, они делятся на две группы: команды обычного сравнения (равно или не равно) и команды сравнения по величине (больше или меньше). Операции сравнения проводятся для упакованных байтов, слов и двойных слов.
Мнемоника
Описание
PCMPEQB
Packed CoMParE for Equal Byte
Попарное сравнение (на равенство) упакованных байт. Все биты элемента результата будут единичными (true) при совпадении соответствующих элементов операндов и нулевыми (false) - при несовпадении.
PCMPEQW
Packed CoMParE for Equal Word
Попарное сравнение (на равенство) упакованных слов. Все биты элемента результата будут единичными (true) при совпадении соответствующих элементов операндов и нулевыми (false) - при несовпадении.
PCMPEQD
Packed CoMParE for Equal Double word
Попарное сравнение (на равенство) упакованных двойных слов. Все биты элемента результата будут единичными (true) при совпадении соответствующих элементов операндов и нулевыми (false) - при несовпадении.
PCMPGTB
Packed CoMParE for Greater Than Byte
Попарное сравнение (по величине) упакованных знаковых байт. Все биты элемента результата будут единичными (true), если соответствующий элемент приемника больше элемента источника, и нулевыми (false) в противном случае.
PCMPGTW
Packed CoMParE for Greater Than Word
Попарное сравнение (по величине) упакованных знаковых слов. Все биты элемента результата будут единичными (true), если соответствующий элемент приемника больше элемента источника, и нулевыми (false) в противном случае.
PCMPGTD
Packed CoMParE for Greater Than Double word
Попарное сравнение (по величине) упакованных знаковых двойных слов. Все биты элемента результата будут единичными (true), если соответствующий элемент приемника больше элемента источника, и нулевыми (false) в противном случае.
Дополнительные команды. Сейчас мы рассмотрим еще одну группу команд, которые трудно отнести к какому-либо определенному типу, но которые являются весьма полезными при разработке программ.
Мнемоника
Описание
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-разрядная ячейка памяти, а приемником — один из ММХ-регистров.
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление