October 18 2017 12:24:44
Навигация
Авторизация
Логин

Пароль



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

Забыли пароль?
Запросите новый здесь.
Две формы записи команд сравнения
ФОРМАТЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ И ВЫПОЛНЕНИЕ ОПЕРАЦИЙ

Таблица 2.51 Команды сравнения

Синтаксис команды Операция
CMPEQPS xmm,xmm /m128

CMPEQSS xmm.xmm /m32
FFFFFFFFh ® xmm(Fi), xmm(Fi) = xmm /m128(Fi)
00000000h ® xmm(Fi), xmm(Fi) ¹ xmm /m128(Fi)
FFFFFFFFh ® xmm(F0), xmm(F0) = xmm /m32(F0)
00000000h ® xmm(F0), xmm(F0) ¹ xmm /m32(F0)
CMPLTPS xmm,xmm /m128

CMPLTSS xmm.xmm /m32
FFFFFFFFh ® xmm(Fi), xmm(Fi) < xmm /m128(Fi)
00000000h ® xmm(Fi), xmm(Fi) > xmm /m128(Fi)
FFFFFFFFh ® xmm(F0), xmm(F0) < xmm /m32(F0)
00000000h ® xmm(F0), xmm(F0) > xmm /m32(F0)
CMPLEPS xmm.xmm /m128

CMPLESS xmm.xmm /m32
FFFFFFFFh ® xmm(Fi), xmm(Fi) < xmm /m128(Fi)
00000000h ® xmm(Fi), xmm(Fi) > xmm /m128(Fi)
FFFFFFFFh ® xmm(F0), xmm(F0) < xmm /m32(F0)
00000000h ® xmm(F0), xmm(F0) > xmm /m32(F0)
CMPUNORDPS xmm.xmm /m128

CMPUNORDSS xmm.xmm /m32
FFFFFFFFh ® xmm(Fi), xmm(Fi) ? xmm /m128(Fi)
00000000h ® xmm(Fi), xmm(Fi) ? xmm /m128(Fi)
FFFFFFFFh ® xmm(F0), xmm(F0) ? xmm /m32(F0)
00000000h ® xmm(F0), xmm(F0) ? xmm /m32(F0)
CMPNEQPS xmm.xmm/m128

CMPNEQSS xmm.xmm /m32
FFFFFFFFh ® xmm(Fi), xmm(Fi) ¹ xmm /m128(Fi)
00000000h ® xmm(Fi), xmm(Fi) = xmm /m128(Fi)
FFFFFFFFh ® xmm(F0), xmm(F0) ¹ xmm /m32(F0)
00000000h ® xmm(F0), xmm(F0) = xmm /m32(F0)
CMPNLTPS xmm.xmm /m128

CMPNLTSS xmm.xmm /m32
FFFFFFFFh ® xmm(Fi), xmm(Fi) > xmm /m128(Fi)
00000000h ® xmm(Fi), xmm(Fi) < xmm /m128(Fi)
FFFFFFFFh ® xmm(F0). xmm(F0) > xmm /m32(F0)
00000000h ® xmm(F0), xmm(F0) < xmm /m32(F0)
CMPNLEPS xmm.xmm /m128

CMPNLESS xmm.xmm /m32
FFFFFFFFh ® xmm(Fi), xmm(Fi) > xmm /m128(Fi)
00000000h ® xmm(Fi), xmm(Fi) <xmm /m128(Fi)
FFFFFFFFh ® xmm(F0), xmm(F0) > xmm /m32(F0)
00000000h ® xmm(F0), xmm(F0) <xmm /m32(F0)
CMPORDPS xmm.xmm /m128

CMPORDSS xmm.xmm /m32
FFFFFFFFh ® xmm(Fi), xmm(Fi) ? xmm /m128(Fi)
00000000h ® xmm(Fi), xmm(Fi) ? xmm /m128(Fi)
FFFFFFFFh ® xmm(F0), xmm(F0) ? xmm /m32(F0)
00000000h ® xmm(F0), xmm(F0) ? xmm /m32(F0)
COMISS xmm.xmm /m32
UCOMISS xmm.xmm /m32
EFLAGS ? xmm - xmm /m32
EFLAGS ? xmm - xmm /m32
MAXPS xmm.xmm /128
MAXSS xmm.xmm /m32
Max(xmm, xmm /m128) ® xmm (пакет)
Max(xmm, xmm /m32) ® xmm (скаляр)
MINPS xmm.xmm /128
MINSS xmm.xmm/m32
Min(xmm, xmm /m128) ® xmm (пакет)
Min(xmm, xmm /m32) ® xmm (скаляр)

Команды COMISS и UCOMISS производят сравнение двух чисел одинарной точности с установкой признаков в регистре EFLAGS. При этом признаки OF,SF,AF принимают значение «0», а признаки ZF,PF,CF устанавливаются в зависимости от результатов сравнения (табл. 2.54). Команда COMISS реализует исключение типа #1, если элемент хотя бы одного из операндов является не-числом (SNaN или QNaN), а команда UCOMISS - если элемент одного из операндов является SNaN. Состояние регистра EFLAGS при реализации данного исключения не изменяется. В случае, если соответствующий бит маски имеет значение IM = 1 (исключение маскировано), то исключение не реализуется, а признаки ZF, PF, CF устанавливаются в «1».

Таблица 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 Упорядочены

Таблица 2.53 Результаты выполнения команд сравнения при поступлении операндов NaN

Предикат im8 Результат, если NaN операнд Исключения #l при NaN операнде
EQ 0 00000000h Нет
LT 1 00000000h Да
LE 2 00000000h Да
UNORD 3 FFFFFFFFh Нет
NEQ 4 FFFFFFFFh Нет
NLT 5 FFFFFFFFh Да
NLE 6 FFFFFFFFh Да
ORD 7 00000000h Нет

Таблица 2.54 Установка признаков командами COMISS и UCOMISS

Условие ZF PF CF
Не-числа
xmm > xmm /m32
хmm < хmm /m32
хmm = хmm /m32
1
0
0
1
1
0
0
0
1
0
1
0

Команды MAX[PS,SS] и MIN[PS,SS] выделяют из исходных операндов элементы с наибольшими или наименьшими значениями. Элементы операндов попарно сравниваются между собой, и в качестве соответствующего элемента результата в регистр xmm заносится элемент с наибольшим (команда МАХ) или наименьшим (команда MIN) значением. Если хотя бы один из сравниваемых элементов является не-числом, и значение бита маски IM = 1, то соответствующим элементом результата становится элемент из операнда-источника xmm/m128 или xmm/m32 независимо оттого, является ли он достоверным числом или NaN.

2.6.6. КОМАНДЫ ПРЕОБРАЗОВАНИЯ ФОРМАТА ЧИСЕЛ

Команды этой группы производят преобразование операндов из формата с плавающей точкой одинарной точности (ОТ) в 32-разрядные целые числа (двойное слово) и обратно (табл. 2.55). Мнемокоды команд начинаются буквами CVT, а в качестве суффикса дается символическое обозначение преобразования, которое выполняет команда:

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

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

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

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