Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 82

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 76 77 78 79 80 81 < 82 > 83 84 85 86 87 88 .. 528 >> Следующая

БН
!С';,
Команды PADD[B,W,D] и PSUB[B,W,D], PADDS[B,W] и PSUBS[B,W], PADDUS[B,W] и
PSUBUS[B,W] производят сложение и вычитание элементов данных,
представленных в соответствующем формате. При выполнении этих операций
один из операндов всегда размещается в MMX-регистре 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 осуществляют умножение слов со знаком, хранящихся
в MMX-регистре mm и регистре или ячейке памяти mm/m64. После выполнения
операции в соответствующих элементах (словах) регистра mm размещается
старшее (команда PMULHW с суффиксом Н) или младшее (команда PMULLW с
суффиксом L) слово полученного 32-разрядного произведения. Команда
PMULHUW выполняет действия, аналогичные команде PMULHW, над словами без
знака.
Команда PMADDWD реализует операцию умножения с накоплением.
Обрабатываемые элементы представляются в виде чисел со знаком. Выполнение
этой команды иллюстрируется на рис. 2.30. Слова W3-0 операнда,
хранящегося в MMX-регистре mm, умножаются
PMADDWB mm, mm/m64
63
1
W3
W2
W1
WO
mm/m64
Промежуточный результат -128
W3
127 i
03
63
W2
W1
D2
D1
2
D1
WO
DO
DO
Рис. 2.30. Выполнение команды PMADDWD
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
PSADBW mm, mm/m64
mm I 07 I | B6 I 05 I | B4 | B3 I B2 | B1 I BO |
- - - - - -
mm/m64 I 67 | B6 I 05 I | B4 | B3 | B2 I B1 I во |
L 4- 4- 4- 4^
mm | 0000h | OOOOh | OOOOh I wo |
Рис. 2.31. Выполнение команды PSADBW
на слова W3-0 операнда, хранящегося в регистре или ячейке памяти mm/m64.
Таким образом, получается промежуточный результат в виде четырех двойных
слов D3-0. Затем два старших двойных слова этого результата - D3 и D2 -
суммируются. Их сумма записывается в MMX-регистр mm в качестве старшего
двойного слова D1 конечного результата. Два младших двойных слова
промежуточного результата - D1 и DO - также суммируются, и их сумма
записывается в регистр mm в качестве младшего двойного слова DO конечного
результата.
При сложении двойных слов промежуточного результата (D3 и D2, или D1 и
DO) может образоваться перенос, если все четыре слова, участвующие в
операции умножения при получении промежуточного результата, равны 8000h
(- 32768). В этом случае двойное слов D1 или DO в окончательном
результате данной операции будет иметь значение 800000006 (- 2147483648).
Команда PAVG[B,W] производит вычисление средних значений беззнаковых
элементов (байтов или слов) в исходных операндах, которые хранятся в
регистре mm и регистре или ячейке памяти mm/m64. Эти элементы сначала
складываются, а затем их сумма вместе с битом переноса сдвигается на один
разряд влево, что эквивалентно делению на 2. При этом старший бит
элемента заполняется битом переноса, который получился в результате
сложения. Таким образом, в каждом элементе результата, записываемого в
регистр mm, оказывается среднее значение элементов исходных операндов.
Команда PSADBW выполняет сложение абсолютных разностей байтов без знака
(рис. 2.31). Беззнаковые байты, хранящиеся в регистре или ячейке памяти
mm/m64, вычитаются из беззнаковых байтов в регистре mm, а затем
абсолютные значения полученных разностей суммируются. Результат их
сложения записывается в качестве младшего слова W0 в регистр mm. В
старшие три слова W3-1 этого регистра записываются нули.
2.5.4. КОМАНДЫ ЛОГИЧЕСКИХ ОПЕРАЦИЙ И СДВИГОВ
Команды этой группы приведены в таблице 2.43.
Команды PAND, PANDN, POR, PXOR выполняют логические операции И, НЕ-И
(Запрет), ИЛИ, Исключающее ИЛИ соответственно. Логические операции
выполняются над значениями каждого из разрядов исходных операндов,
которые размещаются в pervicrpe mm и регистре или ячейке памяти mm/m64.
Результат операции записывается в pervicrp mm.
В командах сдвига сдвигаемый операнд всегда размещается в MMX-регистре
mm. Число разрядов сдвига указывается во втором операнде (операнде-
источнике), который может храниться в MMX-регистре mm, ячейке памяти т64
или задаваться непосредственно операндом im8. Сдвиг выполняется отдельно
для каждого элемента исходного операнда. При этом выдвигаемые биты не
сохраняются.
СИСТЕМА КОМАНД: ОПЕРАЦИИ ММХ
Таблица 2.43
Команды логических операций и сдвигов
Синтаксис команды Операция
PAND mm,mm/m64 mm л mm/m64 -> mm
PANDN mm,mm/m64 mm л mm/m64 -> mm
POR mm,mm/m64 mm v mm/m64 -" mm
PXOR mm,mm/m64 mm (r) mm/m64 -" mm
PSLLW mm,mm/m64 PSLLW mm,imm8 PSLLD mm,mm/m64 PSLLD mm,imm8 PSLLQ
mm,mm/m64 PSLLQ mm,imm8 Логический сдвиг влево mm(W) " mm/m64 ->
mm(W) mm(W) " imm8 -> mm(W) mm(D) " mm/m64 -> mm(D) mm(D) " imm8 -> mm(D)
mm(Q) " mm/m64 -> mm(Q) mm(Q) " imm8 -> mm(Q)
Предыдущая << 1 .. 76 77 78 79 80 81 < 82 > 83 84 85 86 87 88 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed