Форматы данных и команды их обработки процессоров Pentium III, Pentium IV
использовать совместно с командами 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.
MOVDQA приемник, источник
MOVDQA (MOVe Aligned Double Quadword) — перемещение выровненных 128
бит из источника в приемник.
Синтаксис и машинный код:
66 0F 6F /r MOVDQA rxmm1, rxmm2/m128
66 0F 7F /r MOVDQA rxmm2/m128, rxmml
Действие: переместить содержимое источника в приемник. Операнд в
памяти должен быть выровнен на 16-байтовой границе.
Исключения: РМ: #GP(0): 2,42; #NM: 3; #SS(0): 1; RM: #GP: 13,16; #NM:
3; #UD: 17, 19, 22; #PF(fault-code); VM: исключения реального режима;
#PF(fault-code).
MOVDQU приемник, источник
MOVDQU (MOVe Unaligned Double Quadword description) — перемещение
невыровненных 128 бит из источника в приемник.
Синтаксис и машинный код:
F3 0F 6F /r MOVDQU xmm1, xmm2/m128
F3 0F 7F /r MOVDQU xmm2/m128, xmm1
Действие: переместить содержимое источника в приемник.
Исключения: РМ: #GP(0): 2; #NM: 3; #PF(fault-code); #SS(0): 1; #UD:
10,12,15; RM: #GP: 13; #NM: 3; #UD: 17,19,22; VM: исключения реального
режима; #PF(fault-code).
MOVDQ2Q приемник, источник
MOVDQ2Q (MOVe Quadword from XMM to MMX register description) —
перемещение младшего учетверенного слова ХММ-регистра в ММХ-регистр.
Синтаксис: MOVDQ2Q mm, xmm
Машинный код: F2 0F D6
Действие: переместить содержимое источника в приемник по схеме:
приемник ( источник[63-0].
Исключения: РМ: #NM: 3; #UD: 10, 12, 15; #MF; RM: исключения
защищенного
режима; VM: исключения защищенного режима.
MOVHPD приемник, источник
MOVHPD (MOVe High Packed Double-precision floating-point value) —
перемещение старшего упакованного значения с плавающей точкой двойной
точности.
Синтаксис и машинный код:
66 0F 16 /r MOVHPD rxmm, m64
66 0F 17 /r MOVHPD m64, rxmm
Действие: переместить учетверенное слово (содержащее упакованное
значение с плавающей точкой двойной точности) из источника в приемник.
Источник и приемник могут быть либо ХММ-регистром, либо 64-разрядной
ячейкой памяти (но не одновременно). Для регистрового операнда перемещению
подвергается старшее учетверенное слово (разряды [64-127]). Младшее
учетверенное слово ХММ-регистра (разряды [0-63]) не изменяется.
Исключения: РМ: #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD:
10, 13, 19; #AC(0)_cpl3; RM: #GP: 13; #NM: 3; #UD: 12,13,17; VM: исключения
реального режима; #PF(fault-code); #AC(0)_u.
MOVLPD приемник, источник
MOVLPD (MOVe Low Packed Double-precision floating-point value) —
перемещение младшего упакованного значения с плавающей точкой двойной
точности.
Синтаксис и машинный код:
66 0F 12 /r MOVLPD rxmm, m64
66 0F 13 /r MOVLPD m64, rxmm
Действие: переместить учетверенное слово (содержащее упакованное
значение с плавающей точкой двойной точности) из источника в приемник.
Источник и приемник могут быть либо ХММ-регистром, либо 64-разрядной
ячейкой памяти (но не одновременно). Для регистрового операнда перемещению
подвергается младшее учетверенное слово (разряды [0-63]). Старшее
учетверенное слово ХММ-регистра (разряды [64-127]) не изменяется.
Исключения: РМ: #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD:
10, 12, 13; #AC(0)_cpl3; RM: #GP: 13; #NM: 3; #UD: 17,19,20; VM: исключения
реального режима; #PF(fault-code); #AC(0)_u.
MOVMSKPD приемник, источник
MOVMSKPD (extract Packed Double-precision floating-point sign MaSK) —
извлечение 2-битной знаковой маски упакованных значений с плавающей точкой
двойной точности.
Синтаксис: MOVMSKPD r32, rxmm
Машинный код: 66 0F 50 /r
Действие: извлечь знаковые разряды из упакованных значении с плавающей
точкой двойной точности операнда источник (ХММ-регистр) и сохранить
полученную знаковую маску в двух младших битах операнда приемник (32-битный
общий регистр).
Исключения: РМ: #NM: 3; #ХМ; #UD: 10-12,15; RM: исключения защищенного
режима; VM: исключения защищенного режима.
MOVNTDQ приемник, источник
MOVNTDQ (store Double Quadword using Non-Temporal hint description) —
сохранение двойного учетверенного слова из ХММ-регистра в память без
использования кэша.
Синтаксис: 66 0F E7 /r
Машинный код: MOVNTDQ m128, rxmm
Исключения: РМ: #GP(0): 37, 42; #NM: 3; #PF(fault-code); #SS(0): 13;
#UD: 10, 12,15; RM: #GP: 13,16; #NM: 3; #UD: 17,19,22; VM: исключения
реального режима; #PF(fault-code).
MOVNTI приемник, источник
MOVNTI (store doubleword using Non-Temporal hint description) —
сохранение двойного слова из 32-разрядного регистра общего назначения в
память без использования кэша.
Синтаксис: MOVNTI m32, r32
Машинный код: 0F C3 /r
Исключения: РМ: #GP(0): 37; #PF(fault-code); #SS(0): 13; #UD: 15; RM:
#GP: 13, 16; #NM: 3; #UD: 22; VM: исключения реального режима; #PF(fault-
code).
MOVNTPD приемник, источник
MOVNTPD (store Packed Double-Precision floating-point values using Non-
Temporal hint) — сохранение упакованных значений с плавающей точкой двойной
точности из ХММ-регистра в память без использования кэша.
Синтаксис: MOVNTPD m128, rxmm
Машинный код: 66 0F 2В /r
Исключения: РМ: #GP(0): 37, 42; #NM: 3; #PF(fault-code); #SS(0): 13;
#UD: 10, 12,15; RM: #GP: 13,16; #NM: 3; #UD: 17,19,22; VM: исключения
реального режима; #PF(rault-code).
MOVQ приемник, источник
MOVQ (Move Quadword) — переместить учетверенное слово.
Синтаксис и машинный код:
F3 0F 7E MOVQ rxmm1, rxmm2/m64
66 0F D6 MOVQ rxmm2/m64, rxmm1
Действие:
• Если приемник и источник являются ХММ-регистрами, то изменить
содержимое приемника следующим образом: приемник[63-0](источник[63-0];
разряды приемник[127-64] не изменяются.
• Если приемник — 64-разрядная ячейка памяти, то изменить содержимое
приемника следующим образом: приемник[63-0](источник[63-0].
• Если источник — 64-разрядная ячейка памяти, то изменить содержимое
приемника следующим образом: приемник[63-0](источник[63-0], приемник[63-
0](0000000000000000h.
Флаги: не изменяются.
Исключения: РМ: #GP(0): 1, 2; #SS(0): 1; #UD: 10,12,15; #NM: 3; #MF;
#PF(fault-code); #AC(0)_cpl3; RM: #GP: 13; #MF; #NM: 3; #UD: 17,19, 22; VM:
исключения В реального режима; #PF(fault-code); #AC(0)_u.
MOVQ2DQ приемник, источник
MOVQ2DQ (MOVe Quadword from MMX to XMM register description) —
перемещение учетверенного слова из ММХ-регистра в младшее учетверенное
слово ХММ-регистра.
Синтаксис: MOVQ2DQ rxmm, rmmx
Машинный код: F3 0F D6
Действие: переместить содержимое источника в приемник по схеме:
приемник[63-0] ( источник; приемник[127-64] ( 00000000000000000h.
Исключения: РМ: #NM: 3; #UD: 10, 12, 15; #MF; RM: исключения
защищенного режима; VM: исключения защищенного режима.
MOVSD приемник, источник
MOVSD (MOVe Scalar Double-precision floating-point value) —
перемещение скалярного значения с плавающей точкой двойной точности.
Синтаксис и машинный код:
F2 0F 10 /r MOVSD rxmm1, rxmm2/m64
F2 0F 11 /r MOVSD rxmm2/m64, rxmm1
Действие: переместить скалярное значение с плавающей точкой двойной
точности из разрядов [0-63] источника в разряды [0-63] приемника. Если
операнды — ХММ-регистры, то разряды [64-127] приемника не изменяются. Если
источник -ячейка памяти, то разряды [64-127] приемника обнуляются.
Исключения: РМ: #GP(0): 37; #SS(0): 13; #PF(fault-code); #NM: 3; #XM;
#UD:
10-12,15; #AC(0)_cpl3; RM: #GP: 13; #NM: 3; #UD: 17-19,22; #ХМ; VM:
исключения реального режима; #PF(fault-code); #AC(0)_u.
MOVUPD приемник, источник
MOVUPD (MOVe Unaligned Packed Double-precision floating-point values)
— перемещение невыровненных упакованных значений с плавающей точкой двойной
точности.
Синтаксис и машинный код:
66 0F 10 /r MOVUPD xmm1, xmm2/m128
66 0F 11 /r MOVUPD xmm2/m128, xmm1
Действие: переместить два двойных учетверенных слова (содержащих два
упакованных значения с плавающей точкой двойной точности) из источника в
приемник. Не требуется выравнивания операнда в памяти на 16-байтовой
границе.
Исключения: РМ: #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD:
10-12, 15; #XM; RM: #GP: 13; #NM: 3; #UD: 17-19, 22; #XM; VM: исключения
реального режима; #PF(fault-code).
MULPD приемник, источник
MULPD (MULtiply Packed Double-precision floating-point values) —
умножение упакованных значений с плавающей точкой двойной точности.
Синтаксис: MULPD rxmm1, rxmm2/m128
Машинный код: 66 0F 59 /r
Действие: умножить пары упакованных значений с плавающей точкой
двойной точности источника и приемника по схеме: приемник[63-0](приемник[63-
0][pic]источник[63-0]; приемник[127-64](приемник[127-64][pic]источник[127-
64].
Исключения: SIMD (NE): #O, #U, #I, #Р, #D; PM: #GP(0): 37, 42; #SS(0):
13; #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).
MULSD приемник, источник
MULSD (MULtiply Scalar Double-precision floating-point values) —
умножение скалярных упакованных значений с плавающей точкой двойной
точности.
Синтаксис: MULSD rxmm1, rxmm2/m64
Машинный код: F2 0F 59 /r
Действие: умножить младшие упакованные значения с плавающей точкой
двойной точности источника и приемника по схеме: приемник[63-0](приемник[63-
0] [pic]источник[63-0]; приемник[127-64] — не изменяется.
Исключения: SIMD (NE): #O, #U, #I, #Р, #D; PM: #GP(0): 37; #SS(0): 13;
#NM: 3; #PF(fault-code); #UD: 10-12, 15; #XM; #AC(0)_cpl3; RM: #GP: 13;
#NM: 3; #UD: 17-19, 22; #ХМ; VM: исключения реального режима; #PF(fault-
code); #AC(0)_u.
ORPD приемник, источник
ORPD (bitwise logical OR 0F Double-precision floating-point values) —
поразрядное логическое ИЛИ над упакованными значениями с плавающей точкой
двойной точности.
Синтаксис: ORPD xmm1, xmm2/m128
Машинный код: 66 0F 56 /r
Действие: выполнить операцию поразрядного логического ИЛИ над парами
упакованных значений с плавающей точкой двойной точности в приемнике и
источнике по схеме: приемник[127-0](приемник[127-0]) побитное_ОR
источник[127-0].
Исключения: 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:
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9
|