December 17 2017 04:19:16
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Команды PMULHW и PMULLW
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Команды PADD[B,W,D] и PSUB[B,W,D], PADDS[B,W] и PSUBS[B,W], PADDUS[B,W] и PSUBUS[B,W] производят сложение и вычитание элементов данных, представленных в соответствующем формате. При выполнении этих операций один из операндов всегда размещается в ММХ-регистре mm, другой операнд - в регистре или ячейке памяти mm/m64, результат располагается в регистре mm. Команды PADD[B,W,D], PSUB[B,W,D] выполняют сложение и вычитание элементов без знака, используя принцип циклического переноса (обычная арифметика). Команды PADDS[B,W], PSUBS[B,W] и PADDUS[B,W], PSUBUS[B,W] выполняют сложение и вычитание элементов со знаком (суффикс S) и без знака (суффикс US), используя принцип насыщения.

Команды PMULHW и PMULLW осуществляют умножение слов со знаком, хранящихся в ММХ-регистре mm и регистре или ячейке памяти mm/m64. После выполнения операции в соответствующих элементах (словах) регистра mm размещается старшее (команда PMULHW с суффиксом Н) или младшее (команда PMULLW с суффиксом L) слово полученного 32-разрядного произведения. Команда PMULHUW выполняет действия, аналогичные команде PMULHW, над словами без знака.

img018

Команда PMADDWD реализует операцию умножения с накоплением. Обрабатываемые элементы представляются в виде чисел со знаком. Выполнение этой команды иллюстрируется на рис. 2.30. Слова W3-0 операнда, хранящегося в ММХ-регистре mm, умножаются на слова W3-0 операнда, хранящегося в регистре или ячейке памяти mm/m64. Таким образом, получается промежуточный результат в виде четырех двойных слов D3-0. Затем два старших двойных слова этого результата - D3 и D2 - суммируются. Их сумма записывается в ММХ-регистр mm в качестве старшего двойного слова D1 конечного результата. Два младших двойных слова промежуточного результата - D1 и D0 -также суммируются, и их сумма записывается в регистр mm в качестве младшего двойного слова D0 конечного результата.

При сложении двойных слов промежуточного результата (D3 и D2, или D1 и D0) может образоваться перенос, если все четыре слова, участвующие в операции умножения при получении промежуточного результата, равны 8000h (- 32768). В этом случае двойное слов D1 или D0 в окончательном результате данной операции будет иметь значение 80000000h (- 2147483648).

Команда PAVG[B,W] производит вычисление средних значений беззнаковых элементов (байтов или слов) в исходных операндах, которые хранятся в регистре mm и регистре или ячейке памяти mm/m64. Эти элементы сначала складываются, а затем их сумма вместе с битом переноса сдвигается на один разряд влево, что эквивалентно делению на 2. При этом старший бит элемента заполняется битом переноса, который получился в результате сложения. Таким образом, в каждом элементе результата, записываемого в регистр mm, оказывается среднее значение элементов исходных операндов.

Команда PSADBW выполняет сложение абсолютных разностей байтов без знака (рис. 2.31). Беззнаковые байты, хранящиеся в регистре или ячейке памяти mm/m64, вычитаются из беззнаковых байтов в регистре mm, а затем абсолютные значения полученных разностей суммируются. Результат их сложения записывается в качестве младшего слова W0 в регистр mm. В старшие три слова W3-1 этого регистра записываются нули.

img019

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.02 секунд 2,298,814 уникальных посетителей