Рефераты. Форматы данных и команды их обработки процессоров Pentium III, Pentium IV p>CVTTSD2SI приемник, источник

CVTTSD2SI (ConVerT with Truncation Scalar Double-precision floating- point value to Signed doubleword Integer) — преобразование (путем отбрасывания дробной части) скалярного значения с плавающей точкой двойной точности в 32-битное целое.

Синтаксис: CVTTSD2SI r32, rxmm/m64

Машинный код: F2 0F 2C /r

Действие: алгоритм работы команды показан на рисунке ниже.

[pic]

В случае, когда не удается выполнить точное преобразование, значение округляется в сторону нуля. Если преобразованный результат больше чем максимально возможное целочисленное 32-битное значение, то будет возвращено значение 80000000h.

Исключения: SIMD (NE): #I,#Р; РМ: #GP(0): 37; #NM: 3; #PF(fault-code);
#SS(0): 13; #UD: 10-12, 15; #XM; #AC(0)_cpl3; RM: #GP: 13; #NM: 3; #UD: 17-
19, 22; #ХМ; VM: исключения реального режима; #AC(0)_u; #PF(fault-code).

DIVPD приемник, источник

DIVPD (DIVide Packed Double-precision floating-point values) — деление упакованных значений с плавающей точкой двойной точности.

Синтаксис: DIVPD xmm1, xmm2/m128

Машинный код: 66 0F 5E /r

Действие: разделить пары упакованных значений с плавающей точкой двойнор точности источника и приемника по схеме: приемник[63-0](приемник[63-
0]/источник[63-0]; приемник[127-64](приемник[127-64]/источник[127-64].

Исключения: SIMD (NE): #O, #U, #I, #Z, #P, #D; PM: #GP(0): 37,42;
#SS(0): 13; #PF(fault-code); #NM: 3; #UD: 10-12, 15; #XM; RM: #GP: 13, 16;
#NM: 3; #VD: 17-19, 22; #XM; VM: исключения реального режима; #PF(fault- code).

DIVSD приемник, источник

DIVSD (DIVide Scalar Double-Precision Floating-Point Values) — деление скалярных упакованных значений с плавающей точкой двойной точности.

Синтаксис: DIVSD rxmm1, rxmm2/m64

Машинный код: F2 0F 5E /r

Действие: разделить младшие упакованные значения с плавающей точкой двойной точности источника и приемника по схеме: приемник[63-0](приемник[63-
0]/ источник[63-0]; приемник[127-64] — не изменяется.

Исключения: SIMD (NE): #O, #U, #Z, #I, #P, #D; PM: #GP(0): 37; #NM: 3;
#PF(fault-code); #SS(0): 13; #UD: 10-12, 15; #XM; #AC(0)_cpl3; RM: #GP: 13;
#NM: 3; #UD: 17-19, 22; #ХМ; VM: исключения реального режима; #PF(fault- code), AC(0)_u.

LFENCE адрес_байта

LFENCE (Load FENCE) — упорядочить операции загрузки.

Синтаксис: LFENCE

Машинный код: 0F AE /5

Действие: выполнить упорядочивание исполнения команд загрузки из памяти, которые были инициированы перед этой командой LFENCE. Эта операция гарантирует, что каждая команда загрузки, за которой следует в программе команда LFENCE, глобально видима перед любой другой командой загрузки, за которой следует команда LFENCE. Команда LFENCE упорядочивается относительно команд загрузки, других команд LFENCE, MFENCE и любых команд упорядочивания
(сериализации, типа команды CPUID). Она не упорядочивается относительно команд сохранения в памяти или команды SFENCE.

Исключения: отсутствуют.

MASKMOVDQU источник, маска

MASKMOVDQU (Store Selected Bytes 0F Double Quadword) — выборочная запись байт из источника в память с использованием байтовой маски в приемнике.

Синтаксис: 66 0F F7 /r

Машинный код: MASKMOVDQU rxmm1, rxmm2

Действие: сохранить выбранные байты операнда источник в 128-разрядную ячейку памяти. Операнд маска определяет байты источника, которые сохраняются в памяти. Местоположение первого байта ячейки памяти приемника, в которую сохраняются байты, определяются парой DS:DI/EDI. Старший значащий бит каждого байта операнда маска определяет, будет ли сохранен в приемнике соответствующий байт источника: 0 — байт не сохраняется; 1 — байт сохраняется. Команда MASKMOVEDQU генерирует указание процессору не использовать кэш. Это указание реализуется посредством метода кэширования
WC (Write Combining — память с комбинированной записью). При этом операции упорядочивания, осуществляемые командами SFENCE или MFENCE, необходимо использовать совместно с командами MASKMOVEDQU. Для многопроцессорной конфигурации это особенно важно, так как различным процессорам могут требоваться различные типы памяти для чтения/записи ячейки приемника.

Исключения: PM: #GP(0): 37 (в том числе при нулевой маске); #NM: 3;
#PF(fault-code); #SS(0): 13 (в том числе при нулевой маске); #UD: 10, 12,
15; RM: #GP: 13 (в том числе при нулевой маске); #NM: 3; #UD: 17,19, 22;
VM: исключения реального режима; #PF(fault-code).

MAXPD приемник, источник

MAXPD (return MAXimum Packed Double-precision floating-point values) — возврат максимальных упакованных значений с плавающей точкой двойной точности.

Синтаксис: MAXPD rxmm1, rxmm2/m128

Машинный код: 66 0F 5F /r

Действие: сравнить упакованные значения с плавающей точкой двойной точности в источнике и приемнике и заместить максимальными из них соответствующие упакованные значения в приемнике. Если значение в источнике
— SNAN (не QNAN), то оно помещается в приемник. Если только одно значение в приемнике или источнике — не число NaN (SNaN или QNAN), то в приемник помещается содержимое источника, которое может быть либо NAN, либо правильным значением числа с плавающей точкой.

Исключения: SIMD (NE): #I (в том числе, если источник = QNaN), #D; PM:
#GP(0): 37, 42; #SS(0): 1;#NM: 3; #PF(fault-code); #UD: 10-12, 15; #XM; RM:
#GP: 13, 16; #NM: 3; #UD: 17-19, 22; #XM; VM: исключения реального режима;
#PF(fault-code).

MAXSD приемник, источник

MAXSD (return MAXimum Scalar Double-precision floating-point value) — возврат максимального скалярного значения с плавающей точкой двойной точности.

Синтаксис: MAXSD rxmm1, rxmm2/m64

Машинный код: F2 0F 5F /r

Действие: сравнить значения с плавающей точкой двойной точности в разрядах [63-0] источника и приемника и заместить максимальным из них значение в разрядах [63-0] приемника. Если значение в источнике — SNAN (не
QNAN), то оно помещается в приемник. Если только одно значение в приемнике или источнике — не число NaN (SNaN или QNAN), то в приемник помещается содержимое источника, которое может быть либо NAN, либо правильным значением числа с плавающей точкой. Значение в разрядах [127-64] приемника не изменяется.

Исключения: SIMD (NE): #I (в том числе, если источник = QNaN), #D; PM:
#GP(0): 37; #SS(0): 1; #NM: 3; #PF(fault-code); #UD: 10-12, 15; #ХМ;
#АС(0)_срl3; RM: #GP: 13; #NM: 3; #UD: 17-19, 22; #XM; VM: исключения реального режима; #PF(fault-code); #AC(0)_u.

MFENCE

MFENCE (Memory FENCE) — упорядочить операции загрузки и сохранения.

Синтаксис: MFENCE

Машинный код: 0F AE /6

Действие: выполнить упорядочивание команд загрузки из памяти и сохранения в памяти, которые были инициированы перед этой командой MFENCE.
Эта операция гарантирует, что каждая команда загрузки и сохранения, за которой следует в программе команда MFENCE, глобально видима перед любой другой командой загрузки и сохранения, за которой следует команда MFENCE.
Команда MFENCE упорядочивается относительно команд загрузки и сохранения, других команд LFENCE, MFENCE, SFENCE и любых команд упорядочивания
(сериализации, типа команды CPUID).
Исключения: отсутствуют.

MINPD приемник, источник

MINPD (return MINimum Packed Double-precision floating-point values) — возврат минимальных упакованных значений с плавающей точкой двойной точности.

Синтаксис: MINPD xmm1, xmm2/m128

Машинный код: 66 0F 5D /r

Действие: сравнить упакованные значения с плавающей точкой двойной точности в источнике и приемнике и заместить минимальными из них соответствующие упакованные значения в приемнике. Если значение в источнике
— SNAN (не QNAN), то оно помещается в приемник. Если только одно значение в приемнике или источнике — не число NaN (SNaN или QNAN), то в приемник помещается содержимое источника, которое может быть либо NAN, либо правильным значением числа с плавающей точкой.

Исключения: SIMD (NE): #I (в том числе, если источник == QNaN), #D;
PM: #GP(0): 37, 42; #SS(0): 1; #NM: 3; #PF(fault-code); #UD: 10-12, 15;
#XM; RM: #GP: 13, 16; #NM: 3; #UD: 17-19, 22; #ХМ; VM: исключения реального режима; #PF(fault-code).

MINSD приемник, источник

MINSD (return MINimum Scalar Double-precision floating-point value) — возврат минимального скалярного значения с плавающей точкой двойной точности.

Синтаксис: MINSD xmm1, xmm2/m64

Машинный код: F2 0F 5D /r

Действие: сравнить значения с плавающей точкой двойной точности в разрядах [63-0] источника и приемника и заместить минимальным из них значение в разрядах [63-0] приемника. Если значение в источнике — SNAN (не
QNAN), то оно помещается в приемник. Если только одно значение в приемнике или источнике — не число NaN (SNaN или QNAN), то в приемник помещается содержимое источника, которое может быть либо NAN, либо правильным значением числа с плавающей точкой. Значение в разрядах [127-64] приемника не изменяется.

Исключения: SIMD (NE): #I (в том числе, если источник = QNaN), #D; PM:
#GP(0): 37; #SS(0): 1; #NM: 3; #PF(fault-code); #UD: 10-12, 15; #ХМ;
#АС(0)_ср13; RM: #GP: 13; #NM: 3; #UD: 17-19, 22; #XM; VM: исключения реального режима; #PF(fault-code); #AC(0)_u.

MOVAPD приемник, источник

MOVAPD (MOVe Aligned Packed Double-precision floating-point values) — перемещение упакованных выровненных значений с плавающей точкой двойной точности.

Синтаксис и машинный код:

0F 28 /r MOVAPS xmm1, xmm2/m128

0F 29 /r MOVAPS xmm2/m128, xmm1

Действие: переместить два двойных учетверенных слова (содержащих два упакованных значения с плавающей точкой двойной точности) из источника в приемник. Операнд в памяти должен быть выровнен на 16-байтовой границе.

Исключения: PM: #GP(0): 37,42; #NM: 3; #PF(fault-code); #SS(0): 13;
#UD: 10-12, 15; #XM; RM: #GP: 13,16; #NM: 3; #UD: 17-19,22; #XM; VM: исключения реального режима; #PF(fault-code).

MOVD приемник, источник

MOVD (Move Double word) — перемещение двойного слова между ХММ-регист- ром и 32-разрядным регистром (ячейкой памяти).

Синтаксис и машинный код:

66 0F 6Е /r MOVD rxmm, r/m32

66 0F 7E /r MOVD r/m32, rxmm

Действие:

• Если приемник является ХММ-регистром, поместить в биты 0-31 приемника значение источника, поместить в биты 32-127 приемника нулевое значение.

• Если приемник является 32-разрядной ячейкой памяти или регистром общего назначения, то поместить в приемник значение бит 0-31 источника (ХММ- регистра).

Флаги: не изменяются.

Исключения: РМ: #GP(0): 1, 2; #MF; #PF(fault-code); #SS(0): 1; #UD:
10, 12, 15; #NM 3; #AC(0)_cpl3; RM: #GP: 13; #MF; #NM: 3; #UD: 17,19,22;
VM: #PF(fault-code); #AC(0)_u.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.