- Главная
- Информатика
- Архитектура IA-32. Формат команды IA-32
Содержание
- 2. Формат команды IA-32. Типы префиксов: командные префиксы (префиксы повторения) REP, REPE/REPZ, REPNE/REPNZ; префикс блокировки шины LOCK;
- 3. Новая архитектура - новые возможности при указании адреса для операнда в памяти. Как процессор будет считать
- 4. Для получения операнда из памяти процессору необходимо знать: селектор сегмента, смещение в сегменте. В некоторых командах
- 5. Функциональная классификация машинных команд. Группы внутри всего набора машинных команд: команды общего назначения, исполняемые целочисленным устройством,
- 6. Исключения составляют следующие команды: Цепочечные — могут перемещать данные из памяти в память Работа со стеком
- 7. 6) операнд — порт ввода/вывода Примеры: in al, 48h ; взять байт из порта 48h mov
- 8. Абсолютная прямая адресация: Эффективный адрес операнда формируется из поля смещения команды. mov eax, DWORD PTR [0h]
- 9. Косвенная индексная адресация со смещением: Предназначена для доступа к данным с известным смещением относительно базового адреса,
- 10. ММХ-технология В основе технологии ММХ лежит расширение набора команд (57 новых команд) для эффективного выполнения типичных
- 11. Большинство SPFP-команд имеют два операнда. Данные, содержащиеся в первом операнде, после выполнения команды, как правило, замещаются
- 12. Кроме ХММ-регистров в микропроцессоре Pentium III появился новый регистр состояния и управления MXCSR. Для работы с
- 13. Расширение SSE3, включает 5 новых операций с комплексными числами, 5 потоковых операций над числами с плавающей
- 15. Скачать презентацию
Формат команды IA-32.
Типы префиксов:
командные префиксы (префиксы повторения) REP, REPE/REPZ, REPNE/REPNZ;
префикс блокировки шины
Формат команды IA-32.
Типы префиксов:
командные префиксы (префиксы повторения) REP, REPE/REPZ, REPNE/REPNZ;
префикс блокировки шины
префиксы размера;
префиксы замены сегмента.
Байт "Mod R/M" определяет режим адресации, а также иногда дополнительный код операции.
Байт SIB (Scale-Index-Base) определяет способ адресации при обращении к памяти в 32-битном режиме
На размер инструкции накладывается ограничение в 15 байт.
Инструкция большего размера может получиться при некорректном использовании большого количества префиксов.
↓
В IA-32 в таком случае генерируют исключение #13.
Если инструкция микропроцессора требует операнды, то они могут задаваться следующими способами:
непосредственно в коде инструкции (только операнд-источник);
в одном из регистров;
через порт ввода-вывода;
в памяти.
Для совместимости с 16-битными процессорами архитектура IA-32 использует одинаковые коды для инструкций, оперирующих как с 16-битными, так и 32-битными операндами.
Новая архитектура - новые возможности при указании адреса для операнда в памяти.
Как процессор
Новая архитектура - новые возможности при указании адреса для операнда в памяти.
Как процессор
эффективного размера операнда,
эффективного размера адреса для данной команды.
Эти значения определяются на основе:
режима работы,
бита D дескриптора используемого сегмента,
наличия в инструкции определенных префиксов.
Непосредственный режим адресации подразумевает включение операнда-источника в код инструкции.
Операнд может быть 8-битовым или 16-битовым, если значение эффективного размера операнда - 16.
Операнд может быть 8-битовым или 32-битовым, если значение эффективного размера операнда - 32.
Регистровый режим адресации определят операнд-источник или операнд-приемник в одном из регистров процессора или сопроцессора.
В некоторых случаях,
могут использоваться пары 32-битных регистров (например, EDX:EAX), образуя 64-битный операнд.
Адресация через порт ввода-вывода - получение операнда или сохранение операнда через пространство портов ввода-вывода.
Адрес порта ввода-вывода либо непосредственно включается в код инструкции, либо берется из регистра DX.
Адресация через память. Таким образом, может быть указан операнд-источник или операнд-приемник.
Процессор не позволяет одновременно задавать оба операнда через память (за исключением некоторых цепочечных команд).
Для получения операнда из памяти процессору необходимо знать:
селектор сегмента,
смещение в сегменте.
В
Для получения операнда из памяти процессору необходимо знать:
селектор сегмента,
смещение в сегменте.
В
В других случаях процессор может явно или неявно использовать значение одного из сегментных регистров.
Под неявным использованием сегментных регистров подразумевается то, что в зависимости от предназначения операнда процессор использует определенный сегментный регистр для обращения к памяти:
CS -для выборки инструкций;
SS - для работы со стеком или обращения к памяти через регистры ESP или EBP;
ES - для получения адреса операнда-приемника в цепочечных командах;
DS - при всех остальных обращениях к памяти.
Явное использование сегментных регистров возможно, если в код инструкции включается префикс смены сегмента.
Указание префикса смены сегмента допустимо не для всех команд:
нельзя менять сегмент для команд работы со стеком (всегда используется SS);
для цепочечных команд можно менять сегмент только операнда-источника (операнд-приемник всегда адресуется через ES).
Смещение в сегменте (эффективный или исполнительный адрес - EA) может быть вычислено на основе значений РОН и/или указанного в коде инструкции относительного смещения, при этом любой или даже несколько из указанных компонентов могут отсутствовать:
EA = BASE + (INDEX*SCALE) + DISPLACEMENT
Функциональная классификация машинных команд.
Группы внутри всего набора машинных команд:
команды общего назначения,
Функциональная классификация машинных команд.
Группы внутри всего набора машинных команд:
команды общего назначения,
команды сопроцессора;
команды MMX-расширения;
команды XMM-расширения (наборы команд SSE и SSE2).
Обычно машинная команда имеет два операнда:
приемник,
источник.
Возможны их следующие сочетания:
Исключения составляют следующие команды:
Цепочечные — могут перемещать данные из памяти в
Исключения составляют следующие команды:
Цепочечные — могут перемещать данные из памяти в
Работа со стеком — могут переносить данные из памяти в стек
Команды умножения
Способы задания операндов в команде:
операнд задается неявно на микропроцессорном уровне
Примеры:
std ; устанавливает DF=1
push eax ; устанавливает ESP=ESP-4
2) операнд задается в самой команде (непосредственный операнд)
Примеры:
num EQU 10 ; определяет константу num
mov al, 5 ; загружает в AL значение 5
add al, num ; устанавливает AL=AL+10
3) адресные операнды задают физическое размещение операнда в памяти
Пример:
mov eax, 0 ; загрузка в EBX двойного
mov ds, ax ; слова, расположенного
mov ebx, ds:0h ; в 0000:00000000h
4) перемещаемые операнды — любые символьные имена, представляющие адреса памяти
Пример:
.data
var1 DW 0CFFh ; объявляется переменная
.code
mov ax, var1 ; загружается в AX
5) регистровый операнд
Примеры:
movq mm0, mm1 ; регистру mm0 присваивается
; значение из регистра mm1
sub eax, esi ; из eax вычитается esi
6) операнд — порт ввода/вывода
Примеры:
in al, 48h ; взять байт из
6) операнд — порт ввода/вывода
Примеры:
in al, 48h ; взять байт из
mov al, 20h ; вывести слово в
out dx, al ; порт 20h
7) операнд находится в стеке
Примеры:
push eax ; обменять значения
push ebx ; регистров EAX и EBX
pop eax ; через стек
pop ebx ;
8) операнд находится в памяти
Примеры:
.data
var DD 100 DUP(0)
...
lea esi, var ; загрузить в EAX второй
mov eax, [esi+4] ; элемент массива VAR
Виды адресации операндов делятся на два вида:
● Прямые — эффективный адрес операнда находится непосредственно в коде команды
● Косвенные — в самой команде находится лишь часть эффективного адреса, а остальные его компоненты находятся в регистрах.
Относительная прямая адресация:
Используется в командах условных переходов, поле смещения машинной команды содержит значение, которое будет складываться с регистром EIP.
jz METKA ; переход на метку METKA, если ZF=1
mov al, 5
...
METKA:
Абсолютная прямая адресация:
Эффективный адрес операнда формируется из поля смещения команды.
mov eax,
Абсолютная прямая адресация:
Эффективный адрес операнда формируется из поля смещения команды.
mov eax,
; eax двойное слово
; с адреса ds:0h
Косвенная базовая адресация:
Эффективный адрес операнда может находится в любом регистре кроме ESP и EBP.
mov eax, [ecx]
mov al, [ebx]
Косвенная базовая адресация со смещением:
Предназначена для доступа к данным с известным смещением относительно базового адреса.
.data
var DD 5, 6, 7, 8
.code
mov edx, OFFSET var ; загружаем адрес var
mov eax, [edx+8h] ; доступ к 7
mov edx, 4 ;
mov eax, var[edx] ; доступ к 6
Косвенная индексная адресация со смещением:
Предназначена для доступа к данным с известным
Косвенная индексная адресация со смещением:
Предназначена для доступа к данным с известным
.data
var DD 5, 6, 7, 8
.code
mov edx, 3 ; загружаем адрес var
mov eax, var[edx*4] ; доступ к 8 (=var+edx*4)
Косвенная базовая индексная адресация:
Эффективный адрес формируется как сумма двух регистров общего назначения: базового и индексного. Для индексного регистра возможно масштабирование.
.data
var DD 5, 6, 7, 8
.code
mov ebx, OFFSET var
mov esi, 2
mov eax, [ebx][esi*4] ; доступ к 7 (=ebx+esi*
Косвенная базовая индексная адресация со смещением:
Эффективный адрес формируется как сумма двух регистров общего назначения (базового и
индексного) и смещения.
.data
var DD 5, 6, 7, 8
.code
mov ebx, 4
mov esi, 2
mov eax, var[ebx][esi*4] ; доступ к 8 (=var+ebx+esi*4)
Все 32-хразрядные микропроцессоры Intel семейства Westmere, начиная с двухъядерных процессоров Clarkdale (Core i5 650), поддерживают шесть новых инструкций SIMD, которые Intel назвал AES-NI.
ММХ-технология
В основе технологии ММХ лежит расширение набора команд (57 новых команд) для
ММХ-технология
В основе технологии ММХ лежит расширение набора команд (57 новых команд) для
В технологии ММХ использована модель обработки данных SIMD, предусматривающая одновременное выполнение операции над несколькими целочисленными операндами разрядностью 1, 2 или 4 байта.
ММХ-команды используют восемь 64-разрядных ММХ-регистров с плавающей запятой и реализуются в том же режиме процессора, что и команды с плавающей запятой.
ММХ-команды делятся на следующие группы:
арифметические,
логические,
сдвига,
сравнения,
передачи данных,
упаковки,
распаковки,
отмены режима ММХ.
SSE-расширение
Новые 70 команд SSE-расширения делятся на 4 категории:
SIMD-команды обработки данных в формате с плавающей запятой одинарной точности (SPFP-команды);
дополнительные SIMD-команды для обработки целочисленных данных;
команды управления кэшированием;
команды сохранения и восстановления состояния процессора.
SPFP-команды используют 8 новых 128-разрядных регистров (ХММ-регистры) и новый тип данных – 128-разрядное значение, содержащее 4 последовательно расположенных («упакованных») 32-разрядных числа с плавающей запятой одинарной точности.
При выполнении инструкций с ХММ традиционное оборудование FPU/MMX не используется, что позволяет эффективно смешивать инструкции ММХ с инструкциями над операндами с плавающей точкой.
Большинство SPFP-команд имеют два операнда. Данные, содержащиеся в первом операнде, после
Большинство SPFP-команд имеют два операнда. Данные, содержащиеся в первом операнде, после
SPFP-команды поддерживают два типа операций над упакованными данными с плавающей запятой:
параллельные,
скалярные.
Параллельные операции выполняются над четырьмя 32-разрядными элементами данных, упакованными в каждый 128-разрядный операнд.
Скалярные операции выполняются над младшими (занимающие разряды 0–31) элементами данных двух операндов. Остальные три элемента данных не изменяются.
В расширение SSE включены дополнительные SIMD-команды для работы с целочисленными данными. Эти новые команды расширяют возможности существующего набора команд технологии ММХ. Они выполняют SIMD-операции над несколькими целочисленными данными, упакованными в 64-разрядные группы, загружают и хранят упакованные данные в 64-разрядных ММХ-регистрах.
Кроме того, в SSE введены команды нового типа, обеспечивающие:
управление кэшированием данных с целью повышения эффективности использования кэш-памяти и сокращения числа обращений к основной памяти;
упреждающее кэширование данных с целью организации параллельной работы конвейера команд и обмена с памятью.
Первая группа команд выполняет запись данных из ММХ (ХММ) регистра в память, минуя кэш.
Вторая – обеспечивает запись данных из памяти в кэш различных уровней.
Кроме ХММ-регистров в микропроцессоре Pentium III появился новый регистр состояния и
Кроме ХММ-регистров в микропроцессоре Pentium III появился новый регистр состояния и
Для работы с этими регистрами требуется поддержка как со стороны процессора, так и со стороны операционной системы.
Чтобы прикладные программы и ОС могли сохранять и восстанавливать состояния новых компонентов процессора, введено несколько команд управления.
Первая группа команд управления обеспечивает сохранение в памяти содержимого регистра МХCSR и, наоборот, загружает слово состояния из памяти в регистр MXCSR.
Вторая группа – сохраняет в памяти состояние процессора (состояние регистров данных FPU, MMX-регистров, ХММ-регистров) и восстанавливает ранее сохраненное состояние процессора.
Расширения SSE2, SSE3, SSSE3, SSE4
Расширение SSE2, значительно расширяет возможности обработки нескольких операндов по принципу SIMD по сравнению с SSE.
В нем используется 144 новых команды, обеспечивающих одновременное выполнение операций над несколькими операндами, которые располагаются в памяти и в 128-разрядных регистрах ХММ.
В регистрах могут храниться и одновременно обрабатываться два числа с плавающей запятой в формате двойной точности (64 разряда) или 4 числа в формате одинарной точности (32 разряда), любые целочисленные типы данных, способные разместиться в 128-разрядных регистрах.
Расширение SSE2, представляя собой симбиоз ММХ и SSE, существенно повышают эффективность процессора при реализации трехмерной графики и Интернет-приложений, обеспечение сжатия и кодирования аудио- и видеоданных и в ряде других приложений.
Расширение SSE3, включает 5 новых операций с комплексными числами, 5 потоковых
Расширение SSE3, включает 5 новых операций с комплексными числами, 5 потоковых
Расширение SSSE3 (Supplemental SSE3 – дополнительное потоковое SIMD-расширение 3). Новыми в SSSE3 являются 16 уникальных команд, работающих с упакованными целыми данными. Каждый из них может работать как с 64-битными (ММХ), так и с 128-битными (ХММ) регистрами, поэтому Intel в своих материалах ссылается на 32 новые команды. Новые инструкции включают работу со знаком, сдвиги, перемешивание байт, умножение, горизонтальное сложение/вычитание целых.
Расширение SSE4.1 Набор команд SSE4.1 включает 47 новых инновационных инструкций, основными из которых являются примитивы векторизации для компиляторов и ускорители кодирования видеозаписей с высоким расширением и обработки фотоизображений.
Расширение SSE4.2. Введенные в набор SSE4.2 инструкции ориентированы на ускорение обработки строк и текстовой информации.
Ни одна из SSE4 инструкций не работает с 64-битными ММХ-регистрами, только с 128-битными ХММ-регистрами.
Расширения AES-NI, AVX
Расширение AES-NI (Advanced Encryption Standard New Instructions) – набор из 6 новых SIMD-инструкций, ускоряющий процесс шифрования и дешифрования информации по стандарту AES.
Стандарт AES является стандартом шифрования США, принятым в 2000 г. Он специфицирует алгоритм Rijndael, который представляет собой симметричный блочный шифр, работающий с блоками длиной 128 бит, и использует ключи длиной 128, 192 и 256 бит.