Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемal-never.narod.ru
1 Ф ОРМАТ КОМАНДЫ ПРОЦЕССОРА I NTEL С АРХИТЕКТУРОЙ IA-32
2 О БЩИЕ СВЕДЕНИЯ О ФОРМАТЕ КОМАНДЫ Префиксы (0-5 байт) Блокировки Замены сегмента Замены длины операнда и длины адреса Повторений Код команды (1-2 байта) Может включать в себя специальные поля регистра, размера операнда, размера непосредственного значения, направления выполнения команды, кода условия Mod R/M (0-1) байт Определяет способ адресации нерегистрового операнда, регистр или дополнительный код операции modR/OR/M
3 О БЩИЕ СВЕДЕНИЯ О ФОРМАТЕ КОМАНДЫ SIB – Scale-Index-Base Дополнительное поле для адресации в 32-х разрядном режиме. Хранит коэффициент масштаба, номера индексного и базового регистров scaleindexbase Непосредственное значение (0-4 байта) Смещение (0-4 байта). В командах дальних переходов хранится 2 поля – смещение и селектор сегмента
4 П РЕФИКСЫ
6 П РИМЕР ФОРМИРОВАНИЯ ПРЕФИКСА ПОВТОРЕНИЯ
7 П РЕФИКСЫ
8 П РИМЕР ФОРМИРОВАНИЯ ПРЕФИКСА ЗАМЕНЫ СЕГМЕНТА
9 П РЕФИКСЫ
10 П РИМЕР ФОРМИРОВАНИЯ ПРЕФИКСА OS
11 П РИМЕР ФОРМИРОВАНИЯ ПРЕФИКСА AS
12 П ОЛЯ КОДА ОПЕРАЦИИ
14 К ОДЫ РЕГИСТРОВ
15 К ОДЫ УСЛОВИЙ
16 Ф ОРМИРОВАНИЕ ПОЛЯ REG
17 Ф ОРМИРОВАНИЕ ПОЛЯ W
18 Ф ОРМИРОВАНИЕ ПОЛЯ S
19 Ф ОРМИРОВАНИЕ ПОЛЯ D
20 MOV x, dx MOV dx, x
21 П ОЛЕ КОДА УСЛОВИЙ В КОМАНДАХ УСЛОВНОГО ПЕРЕХОДА
22 П ОЛЕ MOD R/M modR/OR/M
23 З НАЧЕНИЕ ПОЛЯ MOD
24 З НАЧЕНИЕ ПОЛЯ R/O Продолжение кода операции Номер регистра
25 З НАЧЕНИЕ ПОЛЯ R/M
26 П РИМЕРЫ ФОРМИРОВАНИЯ M OD R/M CMP EDX, [EBX] MOV AX, ARR[BX]
27 П ОЛЕ SIB scaleindexbase
28 З НАЧЕНИЕ ПОЛЯ S (S CALE )
29 З НАЧЕНИЕ ПОЛЕЙ I (I NDEX ) И B (B ASE )
30 Ф ОРМИРОВАНИЕ ПОЛЯ SIB ADD EAX,[ESP]
31 Н ЕПОСРЕДСТВЕННОЕ ЗНАЧЕНИЕ необязательное поле команды, которое может занимать 0, 1, 2 или 4 байта. Размер непосредственного операнда определен несколькими факторами: разрядностью программного сегмента; наличием в команде префикса OS = 66h; значением бита s, который позволяет сохранять в тексте программы только младший байт 16-ти или 32-х битного непосредственного операнда, если его значение попадает в диапазон для короткого целого числа со знаком
32 С МЕЩЕНИЕ Если в команде используется смещение, то поле mod должно принимать значения 01 или 10. В случае, если mod = 01 используется 8-ми битное смещение, а при mod = 10 – 16-ти или 32-х разрядное смещение. Если в команде используется прямая адресация, то требуется, чтобы поле mod = 00, а поле R/M принимало значение 110 для указания 16- ти разрядного смещения в 16-ти разрядных сегментах, и 101 – для 32-х разрядного смещения в 32-х разрядных сегментах. Использование 32-х или 16-ти разрядного смещения зависит от разрядности сегмента и наличия префикса AS = 67h. В случае, когда разрядность сегмента кода не совпадает с разрядностью сегмента данных, команда обязательно формируется с преaиксом AS, а разрядность смещения устанавливается по разрядности сегмента кода. При использовании индексной адресации через 32-х разрядные регистры без указания регистра базы обязательно формируется 32-х разрядное смещение, даже если оно не было указано. При адресации через 32-х разрядные регистры с использованием регистра базы размер смещения может быть оптимизирован (хранится в виде одного байта), если его значение находится в диапазоне
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.