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

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

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

какие половины исходных операндов объединяются: старшие (мнемокоды с
суффиксом Н) или младшие (мнемокоды с суффиксом L). Суффиксы BW
(распаковка байтов), WD (распаковка слов), DQ (распаковка двойных слов)
задают форматы представления результата и исходных операндов. Реализация
операции распаковки иллюстрируется на рис. 2.28 на примере выполнения
команд PUNPCKHBW, PUNPCKLWD и PUNPCKLDQ.
а) PACKSSWB mm, mm/m64 или PACKUSWB mm, mm/m64
mm/m64
63 32 31 0
| W3 j W2 | W1 | WO |
B7 | B6 I B5 | B4 I ВЗ I B2 | B1 | BO 63 32 31 0
6) PACKSSDW mm, mm/m64
Рис. 2.27. Выполнение команд PACKSSWB, PACKUSWB (a), PACKSSDW (6)
СИСТЕМА КОМАНД: ОПЕРАЦИИ ММХ
a) PUNPCKLWO mm, mm/m32
63
mm/m32 32 31
63
mm 32 31
6) PUNPCKHBW mm, mm/m64
B7 | B6 | B5 | B4 | B3 | B2 | B1 | BO 63 32 31 0
mm
a) PUNPCKLDQ mm, mm/m32
63
mm/m32 32 31
63
mm
32 31
Рис. 2.28. Выполнение команд PUNPCKHBW (a), PUNPCKLWD (6), PUNPCKLDQ (e)
Команда PSHUFW производит переупорядочивание слов, перемещая элементы
(слова) операнда-источника из регистра или ячейки памяти mm/m64 в
соответствующие позиции элементов операнда-приемника в регистре mm.
Непосредственный операнд im8 указывает, какой из элементов операнда-
источника помещается в определенной позиции операнда-приемника: биты Ы-0
этого операнда задают номер элемента в операнде-источнике, который
помещается на место слова W0 операнда-приемника, биты ЬЗ-2 - номер
элемента, помещаемого на месте слова W1, биты Ь5-4 - номер элемента,
помещаемого на месте слова W2, биты Ь7-6 - номер элемента, помещаемого на
месте слова W3. Выполнение данной команды иллюстрируется на рис. 2.29.
Команда EMMS выполняет пересылку числа FFFFh в регистр тегов TW. При этом
теги Для всех регистров FPU и соответствующих им MMX-регистров принимают
значение 11, что соответствует их пустому состоянию. Таким образом,
данная команда производит освобождение всех регистров FPU и
соответственно MMX-регистров. Данная команда используется после
завершения процедуры обработки упакованных данных, чтобы освободить
регистры для последующего выполнения операций блоком FPU. Если эта
команда не будет выполнена, то регистры остаются заполненными
упакованными данными (при ММХ-операциях теги принимают значение 00, что
соответствует заполнению регистров), и обращение к ним вызовет исключение
типа #MF ("ошибка FPU").
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
PSHUFW mm, mm/m64, 92h 63 0
I W3 I | W2 | W1 I wo |
63 о
| W3 I | W2 | W1 I wo |
.t. 3 f 2 t°,
I W3 | W2 | W1 | WO I
Рис. 2.29. Выполнение команды PSHUFW при значении операнда im8 = 11010010
2.5.3. КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
Эта фуппа (табп. 2.42) содержит как команды, использующие принцип
циклического переноса, таки команды, использующие принцип насыщения.
Мнемокоды команд, при выполнении которых реализуется принцип циклического
переноса, содержат только суффиксы В, W или D, определяющие тип
обрабатываемых данных. При переполнении перенос не фиксируется,
сохраняется только элемент формата. Мнемокоды команд, реализующих принцип
насыщения, кроме суффиксов, определяющих тип данных, содержат суффикс S
или US, указывающий вид насыщения - знаковое или беззнаковое.
Таблица 2.42
Команды арифметических операций
Синтаксис команды Операция
PADDB mm,mm/m64 PADDW mm,mm/m64 PADDD mm,mm/m64 mm(B) + mm/m64(B) -
)mm(B) циклический перенос mm(W) + mm/m64(W) -> mm(W) циклический перенос
mm(D) + mm/m64(D) -> mm(D) циклический перенос
PADDSB mm,mm/m64 PADDSW mm,mm/m64 mm(B) + mm/m64(B) -" mm(B) насыщение со
знаком mm(W) + mm/m64(W) -> mm(W) насыщение со знаком
PADDUSB mm,mm/m64 PADDUSW mm,mm/m64 mm(B) + mm/m64(B) -> mm(B)
насыщение без знака mm(W) + mm/m64(W) -" mm(W) насыщение без знака
PSUBB mm,mm/m64 PSUBW mm,mm/m64 PSUBD mm,mm/m64 mm(B) - mm/m64(B) -"
mm(B) циклический перенос mm(W) - mm/m64(W) -" mm(W) циклический перенос
mm(D) - mm/m64(D) -> mm(D) циклический перенос
PSUBSB mm,mm/m64 PSUBSW mm,mm/m64 mm(B) - mm/m64(B) -> mm(B) насыщение со
знаком mm(W) - mm/m64(W) -> mm(W) насыщение со знаком
PSUBUSB mm,mm/m64 PSUBUSW mm,mm/m64 mm(B) - mm/m64(B) -"mm(B)
насыщение без знака mm(W) - mm/m64(W) -> mm(W) насыщение без знака
PMADDWD mm,mm/m64 mm(W) * mm/m64(W) -> temp(D) temp(D3) + temp(D2) -
> mm(D1) temp(D2) + temp(DO) -> mm(DO)
СИСТЕМА КОМАНД: ОПЕРАЦИИ ММХ
Продолжение таблицы 2.42
Синтаксис команды Операция
PMULHW mm,mm/m64 Умножение слов со знаком с сохранением старшего слова
результата mm(W) * mm/m64(W) -> mm(W)
PMULLW mm,mm/m64 Умножение слов со знаком с сохранением младшего слова
результата mm(W) * mm/m64(W1 -> mm(W)
PMULHUW mm,mm/m64 Умножение слов без знака с сохранением старшего
слова результата mm(W) * mm/m64(W) -> mm(W)
PAVGB mm,mm/m64 PAVGW mm,mm/m64 [mm(B) + mm/m64(B) + 1] / 2 -> mm(B)
без знака [mm(W) + mm/m64(W) + 1] / 2 -> mm(W) без знака
PSADBW mm,mm/m64 Abs[mm(B0) - mm/m64(B0)] + Abs[mm(B1) - mm/m64(B1)] +
... + Abs[mm(B7) - mm/m64(B7)j -" mm(WO) 0 -> mm(W3-W1)
Предыдущая << 1 .. 75 76 77 78 79 80 < 81 > 82 83 84 85 86 87 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed