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

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

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

MINPS xmm, xmm/128 MINSS xmm,xmm /m32 Min(xmm, xmm /m128) -> xmm
(пакет) Min(xmm, xmm/m32) -> xmm (скаляр)
Команды CMP[PS, SS] имеют следующую особенность: вид сравнения ("равно",
"меньше" и т. д.) определяется не кодом операции, а непосредственным
операндом im8. Биты Ь2-0 этого операнда задают вид сравнения, остальные
биты Ь7-3 зарезервированы для будущего использования. При
программировании на языке Ассемблера для этих команд сравнения существует
две формы записи (табл. 2.52): фактическая - с указанием соответствующего
значения операнда im8 = 0-7, и эквивалентная символическая, где вид
сравнения указывается соответствующим предикатом EQ, LT, LE, UNORD, NEQ,
NLT, NLE, ORD в мнемокоде команды (табл. 2.53). В табл. 2.51 принята
эквивалентная форма записи команд. Если при сравнении элементов
операндов, хранящихся в регистре xmm и регистре или ячейке памяти
xmm/m128, xmm/m32, выполняется заданное условие, то соответствующий
элемент результата принимает значение FFFFFFFFh ("1" во всех разрядах),
если не выполняется - значение OOOOOOOOh ("0" во всех разрядах).
Таблица 2.52
Две формы записи команд сравнения CMP[PS,SS]
Эквивалентная форма Фактическая форма Тип сравнения
CMPEQ[PS,SS] xmm1,xmm2 CMP[PS,SS] xmm1,xmm2,0 Равно
CMPLT[PS,SS] xmm1,xmm2 CMP[PS,SS] xmm1,xmm2,1 Меньше
CMPLE[PS,SS] xmm1,xmm2 CMP[PS,SS] xmm1,xmm2,2 Меньше или равно
CMPUNORD[PS,SS] xmm1,xmm2 CMP[PS,SS] xmm1,xmm2,3 Неулорядочены
CMPNEQ[PS,SS] xmm1,xmm2 CMP[PS,SS] xmm1,xmm2,4 Не равно
CMPNLT[PS,SS] xmm1,xmm2 CMP[PS,SS] xmm1,xmm2,5 Не меньше
CMPNLE[PS,SS] xmm1,xmm2 CMP[PS,SS] xmm1,xmm2,6 Не меньше или равно
CMPORD[PS,SS] xmm1,xmm2 CMP[PS,SS] xmm1,xmm2,7 Упорядочены
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Команды сравнения по-разному реагируют на поступление операндов - не-
чисел. Если элементом сравниваемых операндов я&пяется NaN, то для одних
команд результатом сравнения может быть число FFFFFFFFh, а для других
OOOOOOOOh (табл. 2.53). Команды CMPUNORD[PS, SS] и CMPORD[PS, SS]
специально предназначены для сравнения не-чисел. Результатом выполнения
команды CMPUNORD[PS, SS] будет FFFFFFFFh, если хотя бы один из элементов
является He-числом (NaN), и OOOOOOOOh, если оба операнда являются
достоверными числами. Результатом выполнения команды CMPORD[PS, SS]
будет, наоборот, FFFFFFFFh - при сравнении достоверных чисел и OOOOOOOOh
- при сравнении не-чисел. Различные команды сравнения могут вызывать или
не вызывать исключение типа #1 при NAN операндах (табл. 2.53).
Таблица 2.53
Результаты выполнения команд сравнения при поступлении операндов NaN
Предикат im8 Результат, если NaN операнд Исключения #1 при NaN
операнде
EQ 0 OOOOOOOOh Нет
LT 1 OOOOOOOOh Да
LE 2 OOOOOOOOh Да
UNORD 3 FFFFFFFFh Нет
NEQ 4 FFFFFFFFh Нет
NLT 5 FFFFFFFFh Да
NLE 6 FFFFFFFFh Да
ORD 7 OOOOOOOOh Нет
Команды COMISS и UCOMISS производят сравнение двух чисел одинарной
точности с установкой признаков в регистре EFLAGS. При этом признаки
OF,SF,AF принимают значение "О", а признаки ZF,PF,CF устанавливаются в
зависимости от результатов сравнения (табл. 2.54). Команда COMISS
реализует исключение типа #1, если элемент хотя бы одного из операндов
является не-числом (SNaN или QNaN), а команда UCOMISS - если элемент
одного из операндов является SNaN. Состояние регистра EFLAGS при
реализации данного исключения не изменяется. В случае, если
соответствующий бит маски имеет значение IM = 1 (исключение маскировано),
то исключение не реализуется, а признаки ZF, PF, CF устанавливаются в
"1".
Таблица 2.54
Установка признаков командами COMISS и UCOMISS
Условие ZF PF CF
Не-числа 1 1 1
xmm > xmm /т32 0 0 0
xmm < xmm /т32 0 0 1
xmm = xmm /т32 1 0 0
Команды MAX[PS,SS] и MIN[PS,SS] выделяют из исходных операндов элементы с
наибольшими или наименьшими значениями. Элементы операндов попарно
сравниваются между собой, и в качестве соответствующего элемента
результата в регистр xmm заносится элементе наибольшим (команда МАХ) или
наименьшим (команда MIN) значением. Если хотя бы один из сравниваемых
элементов является не-числом, и значение бита маски IM = 1, то
соответствующим элементом результата становится элемент из операнда-
источника xmm/m128 или xmm/m32 независимо оттого, является ли он
достоверным числом или NaN.
СИСТЕМА КОМАНД: ОПЕРАЦИИ SSE
2.6.6. КОМАНДЫ ПРЕОБРАЗОВАНИЯ ФОРМАТА ЧИСЕЛ
Команды этой группы производят преобразование операндов из формата с
плавающей точкой одинарной точности (ОТ) в 32-разрядные целые числа
(двойное слово) и обратно (табл. 2.55). Мнемокоды команд начинаются
буквами CVT, а в качестве суффикса дается символическое обозначение
преобразования, которое выполняет команда:
PI2PS-flBa двойных целых числа со знаком в два числа ОТ;
SI2SS - одно двойное целое число со знаком в одно число ОТ;
PS2PI - два числа ОТ в два двойных целых числа со знаком;
SS2SI - одно число ОТ в одно двойное целое число со знаком.
Таблица 2.55
Команды преобразования из формата с плавающей точкой в целочисленный
Предыдущая << 1 .. 83 84 85 86 87 88 < 89 > 90 91 92 93 94 95 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed