Форматы данных и команды их обработки процессоров 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.

  1. Команды блока 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>