Форматы данных и команды их обработки процессоров Pentium III, Pentium IV
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
?очкой в упакованные целые (двойные слова)
CVTTPD2DQ Преобразование с усечением упакованных чисел с плавающей точкой двойной точности в упакованные целые (двойные слова)
CVTDQ2PD Преобразование упакованных 32-битных целых в упакованные числа с плавающей точкой двойной точности
CVTPS2PD Преобразование упакованных чисел с плавающей точкой одинарной точности в числа двойной точности
CVTPD2PS Преобразование упакованных чисел с плавающей точкой двойной точности в числа одинарной точности
CVTSS2SD Преобразование скалярного числа с плавающей точкой одинарной точности в число двойной точности
CVTSD2SSПреобразование скалярного числа с плавающей точкой двойной точности в число одинарной точности
CVTSD2SI Преобразование скалярного числа одинарной точности в 32-битное целое
CVTTSD2SI Преобразование с усечением скалярного числа двойной точности в 32-битное целое
CVTS12SD Преобразование 32-битного целого в число двойной точности
Инструкции преобразований iислами одинарной точности
CVTDQ2PS Преобразование упакованных 32-битных целых в упакованные числа с плавающей точкой одинарной точности
CVTPS2DQ Преобразование упакованных чисел одинарной точности в числа двойной точности
CVTTPS2DQ Преобразование с усечением упакованных чисел одинарной точности в числа двойной точности
Целочисленные 128-битные SIMD-инструкции
MOVDQA Пересылка выровненного 128-битного операнда
MOVDQU Пересылка невыровненного 128-битного операнда
MOVQ2DQ Пересылка 64-битного целого из ММХ в ХММ
MOVDQ2Q Пересылка 64-битного целого из ХММ в ММХ
PMULUDQ Умножение упакованных беззнаковых 32-битных целых
PADDQ Сложение упакованных 64-битных целых
PSUBQВычитание упакованных 64-битных целых
PSHUFLWПерестановка упакованных младших слов
PSHUFHWПерестановка упакованных старших слов
PSHUFDПерестановка упакованных двойных слов
PSLLDQЛогический сдвиг 64-битных чисел влево
PSRLDQЛогический сдвиг 64-битных чисел вправо
PUNPCKHQDQРаспаковка старших 64-битных чисел
PUNPCKLQDQРаспаковка младших 64-битных чисел Управление кэшированием
CLFLUSHОчистка и инвалидация строки кэша (всех уровней), связанной с указанным операндом в памяти
LFENCEУпорядочивание операций загрузки из памяти
MFENCEУпорядочивание операций загрузки и записи
PAUSEУлучшение выполнения цикла ожидания
MASKMOVDQUВыборочная запись байтов из ХММ в память, минуя кэш
MOVNTPDЗапись пары упакованных чисел из ХММ в память, минуя кэш
MOVNTDQЗапись 128-битного числа из ХММ в память, минуя кэш
MOVNTIЗапись двойного слова из регистра общего назначения в память, минуя кэш
Инструкции 3DNow!, появившиеся с процессорами AMD K6-2, поддерживаются всеми последующими процессорами AMD и некоторыми другими процессорами.
Процессоры Intel этот набор не поддерживают, хотя в SSE имеются инструкции, совпадающие iастью инструкций 3DNow!. В процессорах Athlon расширение 3DNow! получило дополнительные инструкции для сигнальных процессоров. Целочисленные инструкции ММХ и управления кэшированием совпадают с одноименными инструкциями SSE. В данной работе инструкции 3DNow! не рассмотрены, так как не относятся к инструкциям процессоров Pentium 3,4.
- Команды блока XMM (SSE и SSE2)
Порядок описания команд в этом разделе следующий:
в заголовок вынесена схема команды, поясняющая общий набор и назначение операндов;
в следующей строке дается название команды, расшифровка ее мнемоники и назначение;
далее следует синтаксис команды (сложный синтаксис приводится в виде диаграмм), при описании которого используются следующие обозначения:
r8, r16, r32 операнд в одном из регистров размером байт, слово или двойное слово;
m8, m16, m32, m48, m64 операнд в памяти размером байт, слово, двойное слово или 48 бит;
i8, i16, i32 непосредственный операнд размером байт, слово или двойное слово;
машинный код для всех сочетаний операндов описываемой команды (при сложном синтаксисе машинный код включается в синтаксис);
состояние флагов после выполнения команды;
описание действия команды;
описание флагов после выполнения команды, при этом приводятся сведения только о флагах, изменяемых командой, и используются следующие обозначения:
1 флаг устанавливается (равен 1);
0 флаг сбрасывается (равен 0);
r значение флага зависит от результата выполнения команды;
? после выполнения команды флаг не определен;
список исключений.
На многих диаграммах в целях компактности возможные сочетания операндов показаны в виде следующей конструкции:
Конструируя команду на основе подобной синтаксической диаграммы, нужно помнить о соответствии типов. Допустимы только следующие сочетания: "r8, m8", "r16, m16", "r32, m32", а сочетание, например, "r8, m16" недопустимо. Однако, есть единичные случаи, когда подобные сочетания возможны; тогда они оговариваются специальным образом.
Описание машинного кода приводится в двух вариантах.
В двоичном виде. Это описание применяется для демонстрации особенностей внутренней структуры машинной команды. Байты машинного представления машинной команды отделяются двоеточием.
В шеснадцатеричном виде. Каждый байт машинного представления команды представлен двумя шестнадцатеричными цифрами. Часто за одним (двумя и более) первым байтом следует обозначение: /цифра. Это означает, что поле reg в байте mod r/m используется как часть кода операции и цифра представляет содержим?/p>