logo

Главная Система команд x86 Набор команд SIMD CMPSS

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

CMPSS

Сравнить одиночные короткие вещественные значения

Влияние команды на флаги и форматы команды:

I

D

Z

O

U

P

*

*

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

F3 0F C2 /r ib

CMPSS xmm1, xmm2/m128, imm8

Сравнить (по условию imm8) младшие короткие вещественные значения из xmm1и из xmm2/m128, по результатам сравнения установить младший элемент xmm1

Pentium III

cmpss xmm3, xmm5, 6

Описание:

Команда CMPSS сравнивает младшее (из четырех упакованных) короткое вещественное значение из операнда-источника с младшим короткими вещественным из операнда-назначения. По результатам сравнения младший 32-разрядный операнд операнда-назначения заполняется либо единицами, либо нулями.

Третий операнд команды (непосредственное значение imm8) задает условие операции сравнения (0 — равно, 1 — меньше, 2 — меньше либо равно, 3 — несравнимо, 4 — не равно, 5 — не меньше, 6 — не меньше и не равно, 7 — сравнимо). Условие сравненя считается выполненным (True), если выполняется: DEST условие SRC. Например, для входного значения imm8 = 1, условие DEST < SRC выполняется (True), если DEST =2, SRC =8, и не выполняется, если DEST =1, SRC =-5.

Если заданное условие сравнения для соответствующей пары коротких вещественных операндов исполняется, то в 32-разрядное поле операнда-назначения помещаются все 1 (True), в противном случае — все 0 (False).

Операнды считаются несравнимыми, если любой из них NaN, и сравнимыми в противном случае. Для условий сравнения 1, 2, 5, 6, если один из операндов NaN, генерируется SIMD-исключение Недействительная операция (#I).

Значения imm8 большие 7 зарезервированы и не должны использоваться во избежание несовместимости с будущими версиями процессоров.

Операция:

IF (imm8 = 0)

THEN

  OP = "EQ";

ELSE

  IF (imm8 = 1)

  THEN

     OP = "LT";

  ELSE

     IF (imm8 = 2)

     THEN

        OP = "LE";

     ELSE

        IF (imm8 = 3)

        THEN

           OP = "UNORD";

        ELSE

           IF (imm8 = 4)

           THEN

             OP = "NE";

           ELSE

             IF (imm8 = 5)

             THEN

                OP = "NLT";

             ELSE

                IF (imm8 = 6)

                THEN

                   OP = "NLE";

                ELSE

                   IF (imm8 = 7) THEN OP = "ORD";FI;

                FI;

             FI;

           FI;

        FI;

     FI;

  FI;

FI;

CMP0 = DEST[31-0] OP SRC/m128[31-0];

IF (CMP0 = TRUE) THEN

      DEST[31-0] = FFFFFFFFh;

      DEST[63-32] = DEST[63-32];

      DEST[95-64] = DEST[95-64];

      DEST[127-96] = DEST[127-96];

ELSE

      DEST[31-0] = 00000000h;

      DEST[63-32] = DEST[63-32];

      DEST[95-64] = DEST[95-64];

      DEST[127-96] = DEST[127-96];

FI

Особые ситуации защищенного режима:

#GP(0) при некорретном эффективном адресе операнда в памяти в сегментах CS, DS, ES, FS или GS.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки) при страничной ошибке.
#NM, если CR0.TS = 1.
#AC при невыровненных обращениях к памяти (когда CR0.AM = 1, EFLAGS.AC = 1 и CPL = 3).
#UD, если CR0.EM = 1 или CR4.OSFXSR = 0, а также при встрече незамаскированных SIMD-исключений, когда CR4.OSXMMEXCPT = 0.
#XM при встрече незамаскированных SIMD-исключений, когда CR4.OSXMMEXCPT = 1.

Особые ситуации режима реальной адресации:

#GP, если любая часть операнда находится вне пространства эффективных адресов от 0 до 0FFFFh.
#NM, если CR0.TS = 1.
#UD, если CR0.EM = 1 или CR4.OSFXSR = 0, а также при встрече незамаскированных SIMD-исключений, когда CR4.OSXMMEXCPT = 0.
#XM при встрече незамаскированных SIMD-исключений, когда CR4.OSXMMEXCPT = 1.

Особые ситуации режима V86:

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC при невыровненных обращениях к памяти (когда CR0.AM = 1 и EFLAGS.AC = 1).

Замечание:

Некоторые ассемблеры могут использовать следующие мнемоники для конкретных видов сравнения:

CMPEQSS xmm1,xmm2 — для CMPSS xmm1,xmm2,0

CMPLTSS xmm1,xmm2 — для CMPSS xmm1,xmm2,1

CMPLESS xmm1,xmm2 — для CMPSS xmm1,xmm2,2

CMPUNORDSS xmm1,xmm2 — для CMPSS xmm1,xmm2,3

CMPNEQSS xmm1,xmm2 — для CMPSS xmm1,xmm2,4

CMPNLTSS xmm1,xmm2 — для CMPSS xmm1,xmm2,5

CMPNLESS xmm1,xmm2 — для CMPSS xmm1,xmm2,6

CMPORDSS xmm1,xmm2 — для CMPSS xmm1,xmm2,7


Входит в группу команд: Набор команд SIMD




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники