Разделы:


Best links:

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

Команды сложения и вычитания работают с упакованными байтами и словами со знаком и без знака, а также с упакованными двойными словами со знаком. Они могут использовать как циклическую арифметику, так и арифметику с насыщением.                                                                      

Команды сложения paddb, paddw, paddd (циклическая арифметика), paddsb, paddsw (арифметика со знаковым насыщением) и  paddusb, paddusw (арифметика с беззнаковым насыщением) - входной операнд может находиться в ММХ-регистре или в памяти; выходной операнд должен находиться в ММХ-регистре.

Работа команды paddusw ММ0,ММ1 проиллюстрирована на рис. 3.5.

Из рисунка видно, что слово (16 – 31 разряд) содержит значение 65 535. Поскольку сумма соответствующих слов превышает предельно допустимое значение для данного типа операндов, в качестве суммы берется граничное значение.

ImageImage

         Рис. 3.5. Сложение по команде paddusw MM0,MM1

Команды вычитания psub, psubw, psubd (циклическая арифметика),  psubsb, psubsw  (арифметика со знаковым насыщением) и psubusb, psubusw (арифметика с беззнаковым насыщением) - входной операнд может находиться в ММХ-регистре или в памяти; выходной операнд должен находиться в ММХ-регистре.

Команды вычитания работают с теми же типами данных и формируют результат точно так же, как и команды сложения.

Команды умножения попарно перемножают 16-разрядные слова и дают результат по правилам циклической арифметики.

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

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