русс | укр
Программирование:
Языки программирования
Паскаль Си Ассемблер Java Matlab Php Html JavaScript CSS C# Delphi Турбо Пролог 1С
Компьютерные сети Системное программное обеспечение Информационные технологии Программирование
Все о программировании
Обучение
Linux
Unix
Алгоритмические языки
Аналоговые и гибридные вычислительные устройства
Архитектура микроконтроллеров
Введение в разработку распределенных информационных систем
Введение в численные методы
Дискретная математика
Информационное обслуживание пользователей
Информация и моделирование в управлении производством
Компьютерная графика
Математическое и компьютерное моделирование
Моделирование
Нейрокомпьютеры
Проектирование программ диагностики компьютерных систем и сетей
Проектирование системных программ
Системы счисления
Теория статистики
Теория оптимизации
Уроки AutoCAD 3D
Уроки базы данных Access
Уроки Orcad
Цифровые автоматы
Шпаргалки по компьютеру
Шпаргалки по программированию
Экспертные системы
Элементы теории информации
Байты ModR/M и SIB
Дата добавления: 2015-06-12 ; просмотров: 1644 ; Нарушение авторских прав
Байты ModR/M и SIB следуют за байтом (байтами) кода операции во многих командах процессора i486. Они несут следующую информацию:
Тип индексации или номер регистра, используемого в команде. Используемый регистр или дополнительная информация для выбора команды. Информация о базе, индексе и масштабном коэффициенте. Байт ModR/M содержит три информационных поля:
Поле mod, которое занимает два старших бита в байте, и в комбинации с полем r/m образует 32 возможных значения: восемь регистров и 24 режима индексации. Поле reg, занимающее следующие три бита после поля mod, задает либо номер регистра, либо следующие три бита информации о коде операции. Смысл поля reg определяется первым байтом (кодом операции) команды. Поле r/m, занимающее три младшие бита в байте, может либо задавать регистр в качестве местоположения операнда, либо может в комбинации с полем mod формировать часть кодировки режима адресации, как было описано выше. Формы 32-разрядной адресации типа база-индекс или масштаб-индекс требуют наличия байта SIB. Наличие байта SIB определяется определенной кодировкой байта ModR/M. Байт SIB в этом случае содержит следующие поля:
Поле ss, занимающее два старших бита в байте, задает масштабный коэффициент. Поле индекса (index), занимающее следующие три бита после поля ss, задает номер индексного регистра. Поле базы (base), занимающее три младших бита в байте, задает номер базового регистра. Форматы байтов ModR/M и SIB показaны на Рисунке 26-2. Значения и соответствующие формы адресации для байтов ModR/M и SIB показаны в таблицах 26-2, 26-3 и 26-4. 16-разрядные формы адресации, задаваемые байтом ModR/M, показаны в Таблице 26-2. 32 -разрядные формы адресации, задаваемые байтом ModR/M, показаны в Таблице 26-3. В Таблице 26-4 показаны 32-разрядные формы адресации, задаваемые байтом SIB.
Байт MODR/M 7 6 5 4 3 2 1 0 -------------------------------------- | MOD | REG/Код операции| R/M | -------------------------------------- Байт SIB (Масштабный коэффициент, Индекс, База) 7 6 5 4 3 2 1 0 -------------------------------------- | SS | Индекс | База | -------------------------------------- Рисунок 26-2. Формат байтов ModR/M и SIBТаблица 26-2. Формы 16-разрядной адресации для байта ModR/M -------------------------------------------------------------------|r8(/r) | AL | CL | DL | BL | AH | CH | DH | BH ||r16(/r) | AX | CX | DX | BX | SP | BP | SI | DI ||r32(/r) |EAX |ECX |EDX |EBX |ESP |EBP |ESI |EDI ||/цифра (Код операции) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 ||REG |000 |001 |010 |011 |100 |101 |110 |111 ||-----------------------------------------------------------------|| Исполнительный | ModR/M | Шестнадцатиричные значения || адрес | | ModR/M ||-----------------------------------------------------------------|| [BX+SI] | 000 | 00 | 08 | 10 | 18 | 20 | 28 | 30 | 38 || [BX+DI] | 001 | 01 | 09 | 11 | 19 | 21 | 29 | 31 | 39 || [BP+SI] | 010 | 02 | 0A | 12 | 1A | 22 | 2A | 32 | 3A || [BP+DI] | 011 | 03 | 0B | 13 | 1B | 23 | 2B | 33 | 3B || [SI] | 00 100 | 04 | 0C | 14 | 1C | 24 | 2C | 34 | 3C || [DI] | 101 | 05 | 0D | 15 | 1D | 25 | 2D | 35 | 3D || смещ16 | 110 | 06 | 0E | 16 | 1E | 26 | 2E | 36 | 3E || [BX] | 111 | 07 | 0F | 17 | 1F | 27 | 2F | 37 | 3F ||-----------------------------------------------------------------|| [BX+SI]+смещ8 | 000 | 40 | 48 | 50 | 58 | 60 | 68 | 70 | 78 || [BX+DI]+смещ8 | 001 | 41 | 49 | 51 | 59 | 61 | 69 | 71 | 79 || [BP+SI]+смещ8 | 010 | 42 | 4A | 52 | 5A | 62 | 6A | 72 | 7A || [BP+DI]+смещ8 | 011 | 43 | 4B | 53 | 5B | 63 | 6B | 73 | 7B || [SI]+смещ8 | 01 100 | 44 | 4C | 54 | 5C | 64 | 6C | 74 | 7C || [DI]+смещ8 | 101 | 45 | 4D | 55 | 5D | 65 | 6D | 75 | 7D || [BP]+смещ8 | 110 | 46 | 4E | 56 | 5E | 66 | 6E | 76 | 7E || [BX]+смещ8 | 111 | 47 | 4F | 57 | 5F | 67 | 6F | 77 | 7F ||-----------------------------------------------------------------|| [BX+SI]+смещ16 | 000 | 80 | 88 | 90 | 98 | A0 | A8 | B0 | B8 || [BX+DI]+смещ16 | 001 | 81 | 89 | 91 | 99 | A1 | A9 | B1 | B9 || [BP+SI]+смещ16 | 010 | 82 | 8A | 92 | 9A | A2 | AA | B2 | BA || [BP+DI]+смещ16 | 011 | 83 | 8B | 93 | 9B | A3 | AB | B3 | BB || [SI]+смещ16 | 10 100 | 84 | 8C | 94 | 9C | A4 | AC | B4 | BC || [DI]+смещ16 | 101 | 85 | 8D | 95 | 9D | A5 | AD | B5 | BD || [BP]+смещ16 | 110 | 86 | 8E | 96 | 9E | A6 | AE | B6 | BE || [BX]+смещ16 | 111 | 87 | 8F | 97 | 9F | A7 | AF | 77 | BF ||-----------------------------------------------------------------|| EAX/AX/AL | 000 | C0 | C8 | D0 | D8 | E0 | E8 | F0 | F8 || ECX/CX/CL | 001 | C1 | C9 | D1 | D9 | E1 | E9 | F1 | F9 || EDX/DX/DL | 010 | C2 | CA | D2 | DA | E2 | EA | F2 | FA || EBX/BX/BL | 011 | C3 | CB | D3 | DB | E3 | EB | F3 | FB || ESP/SP/AH | 11 100 | C4 | CC | D4 | DC | E4 | EC | F4 | FC || EBP/BP/CH | 101 | C5 | CD | D5 | DD | E5 | ED | F5 | FD || ESI/SI/DH | 110 | C6 | CE | D6 | DE | E6 | EE | F6 | FE || EDI/DI/BH | 111 | C7 | CF | D7 | DF | E7 | EF | F7 | FF |------------------------------------------------------------------- ПРИМЕЧАНИЯ : смещ8 означает, что 8-разрядное смещение, следующее за байтом ModR/M, должно быть расширено по знаку и прибавлено к индексу. смещ16 означает, что 16-разрядное смещение, следующее за байтом ModR/M, должно быть прибавлено к индексу. Сегментным регистром по умолчанию для исполнительного адреса, содержащего индекс BP, является SS, а для прочих исполнительных адресов - DS.
Таблица 26-3. Формы 32-битовой адресации для байта ModR/M -------------------------------------------------------------------|r8(/r) | AL | CL | DL | BL | AH | CH | DH | BH ||r16(/r) | AX | CX | DX | BX | SP | BP | SI | DI ||r32(/r) |EAX |ECX |EDX |EBX |ESP |EBP |ESI |EDI ||/цифра (Код операции) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 ||REG |000 |001 |010 |011 |100 |101 |110 |111 ||-----------------------------------------------------------------|| Исполнительный | ModR/M | Шестнадцатиричные значения || адрес | | ModR/M ||-----------------------------------------------------------------|| [EAX] | 000 | 00 | 08 | 10 | 18 | 20 | 28 | 30 | 38 || [ECX] | 001 | 01 | 09 | 11 | 19 | 21 | 29 | 31 | 39 || [EDX] | 010 | 02 | 0A | 12 | 1A | 22 | 2A | 32 | 3A || [EBX] | 011 | 03 | 0B | 13 | 1B | 23 | 2B | 33 | 3B || [--][--] | 00 100 | 04 | 0C | 14 | 1C | 24 | 2C | 34 | 3C || смещ32 | 101 | 05 | 0D | 15 | 1D | 25 | 2D | 35 | 3D || [ESI] | 110 | 06 | 0E | 16 | 1E | 26 | 2E | 36 | 3E || [EDI] | 111 | 07 | 0F | 17 | 1F | 27 | 2F | 37 | 3F ||-----------------------------------------------------------------|| смещ8[EAX] | 000 | 40 | 48 | 50 | 58 | 60 | 68 | 70 | 78 || смещ8[ECX] | 001 | 41 | 49 | 51 | 59 | 61 | 69 | 71 | 79 || смещ8[EDX] | 010 | 42 | 4A | 52 | 5A | 62 | 6A | 72 | 7A || смещ8[EBX] | 011 | 43 | 4B | 53 | 5B | 63 | 6B | 73 | 7B || смещ8[--][--] | 01 100 | 44 | 4C | 54 | 5C | 64 | 6C | 74 | 7C || смещ8[ebp] | 101 | 45 | 4D | 55 | 5D | 65 | 6D | 75 | 7D || смещ8[ESI] | 110 | 46 | 4E | 56 | 5E | 66 | 6E | 76 | 7E || смещ8[EDI] | 111 | 47 | 4F | 57 | 5F | 67 | 6F | 77 | 7F ||-----------------------------------------------------------------|| смещ32[EAX] | 000 | 80 | 88 | 90 | 98 | A0 | A8 | B0 | B8 || смещ32[ECX] | 001 | 81 | 89 | 91 | 99 | A1 | A9 | B1 | B9 || смещ32[EDX] | 010 | 82 | 8A | 92 | 9A | A2 | AA | B2 | BA || смещ32[EBX] | 011 | 83 | 8B | 93 | 9B | A3 | AB | B3 | BB || смещ32[--][--] | 10 100 | 84 | 8C | 94 | 9C | A4 | AC | B4 | BC || смещ32[EBP] | 101 | 85 | 8D | 95 | 9D | A5 | AD | B5 | BD || смещ32[ESI] | 110 | 86 | 8E | 96 | 9E | A6 | AE | B6 | BE || смещ32[EDI] | 111 | 87 | 8F | 97 | 9F | A7 | AF | 77 | BF ||-----------------------------------------------------------------|| EAX/AX/AL | 000 | C0 | C8 | D0 | D8 | E0 | E8 | F0 | F8 || ECX/CX/CL | 001 | C1 | C9 | D1 | D9 | E1 | E9 | F1 | F9 || EDX/DX/DL | 010 | C2 | CA | D2 | DA | E2 | EA | F2 | FA || EBX/BX/BL | 011 | C3 | CB | D3 | DB | E3 | EB | F3 | FB || ESP/SP/AH | 11 100 | C4 | CC | D4 | DC | E4 | EC | F4 | FC || EBP/BP/CH | 101 | C5 | CD | D5 | DD | E5 | ED | F5 | FD || ESI/SI/DH | 110 | C6 | CE | D6 | DE | E6 | EE | F6 | FE || EDI/DI/BH | 111 | C7 | CF | D7 | DF | E7 | EF | F7 | FF |------------------------------------------------------------------- ПРИМЕЧАНИЯ : [--][--] означает, что за байтом ModR/M следует байт SIB. смещ8 означает, что 8-разрядное смещение, следующее за байтом ModR/M, должно быть расширено по знаку и прибавлено к индексу. смещ32 означает, что 32-разрядное смещение, следующее за байтом ModR/M, должно быть прибавлено к индексу.
Таблица 26-4. Формы 32-битовой адресации для байта SIB -------------------------------------------------------------------|r32 |EAX |ECX |EDX |EBX |ESP |EBP |ESI |EDI ||База | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 ||База |000 |001 |010 |011 |100 |101 |110 |111 ||-----------------------------------------------------------------||Масштабированный| Индекс | Шестнадцатиричные значения || индекс | SS | ModR/M ||-----------------------------------------------------------------|| [EAX] | 000 | 00 | 08 | 10 | 18 | 20 | 28 | 30 | 38 || [ECX] | 001 | 01 | 09 | 11 | 19 | 21 | 29 | 31 | 39 || [EDX] | 010 | 02 | 0A | 12 | 1A | 22 | 2A | 32 | 3A || [EBX] | 011 | 03 | 0B | 13 | 1B | 23 | 2B | 33 | 3B || отсутствует | 00 100 | 04 | 0C | 14 | 1C | 24 | 2C | 34 | 3C || [EBP] | 101 | 05 | 0D | 15 | 1D | 25 | 2D | 35 | 3D || [ESI] | 110 | 06 | 0E | 16 | 1E | 26 | 2E | 36 | 3E || [EDI] | 111 | 07 | 0F | 17 | 1F | 27 | 2F | 37 | 3F ||-----------------------------------------------------------------|| [EAX*2] | 000 | 40 | 48 | 50 | 58 | 60 | 68 | 70 | 78 || [ECX*2] | 001 | 41 | 49 | 51 | 59 | 61 | 69 | 71 | 79 || [EDX*2] | 010 | 42 | 4A | 52 | 5A | 62 | 6A | 72 | 7A || [EBX*2] | 011 | 43 | 4B | 53 | 5B | 63 | 6B | 73 | 7B || отсутствует | 01 100 | 44 | 4C | 54 | 5C | 64 | 6C | 74 | 7C || [EBP*2] | 101 | 45 | 4D | 55 | 5D | 65 | 6D | 75 | 7D || [ESI*2] | 110 | 46 | 4E | 56 | 5E | 66 | 6E | 76 | 7E || [EDI*2] | 111 | 47 | 4F | 57 | 5F | 67 | 6F | 77 | 7F ||-----------------------------------------------------------------|| [EAX*4] | 000 | 80 | 88 | 90 | 98 | A0 | A8 | B0 | B8 || [ECX*4] | 001 | 81 | 89 | 91 | 99 | A1 | A9 | B1 | B9 || [EDX*4] | 010 | 82 | 8A | 92 | 9A | A2 | AA | B2 | BA || [EBX*4] | 011 | 83 | 8B | 93 | 9B | A3 | AB | B3 | BB || отсутствует | 10 100 | 84 | 8C | 94 | 9C | A4 | AC | B4 | BC || [EBP*4] | 101 | 85 | 8D | 95 | 9D | A5 | AD | B5 | BD || [ESI*4] | 110 | 86 | 8E | 96 | 9E | A6 | AE | B6 | BE || [EDI*4] | 111 | 87 | 8F | 97 | 9F | A7 | AF | 77 | BF ||-----------------------------------------------------------------|| [EAX*8] | 000 | C0 | C8 | D0 | D8 | E0 | E8 | F0 | F8 || [ECX*8] | 001 | C1 | C9 | D1 | D9 | E1 | E9 | F1 | F9 || [EDX*8] | 010 | C2 | CA | D2 | DA | E2 | EA | F2 | FA || [EBX*8] | 011 | C3 | CB | D3 | DB | E3 | EB | F3 | FB || отсутствует | 11 100 | C4 | CC | D4 | DC | E4 | EC | F4 | FC || [EBP*8] | 101 | C5 | CD | D5 | DD | E5 | ED | F5 | FD || [ESI*8] | 110 | C6 | CE | D6 | DE | E6 | EE | F6 | FE || [EDI*8] | 111 | C7 | CF | D7 | DF | E7 | EF | F7 | FF |------------------------------------------------------------------- ПРИМЕЧАНИЯ : [*] означает смещ32 без базы, если MOD равно 00, и [ESP] в противном случае. Это обеспечивает следующие режимы адресации: смещ32[индекс] (MOD = 00); смещ8[EBP][индекс] (MOD = 01); смещ32[EBP][индекс] (MOD = 10)
Карта сайта
Карта сайта укр
Видео
Уроки php mysql
Программирование
Онлайн сервисы
Онлайн система счисления
Калькулятор онлайн обычный
Инженерный калькулятор онлайн
Замена русских букв на английские для вебмастеров
Замена русских букв на английские
Полезное
Аппаратное и программное обеспечение
Графика и компьютерная сфера
Интегрированная геоинформационная система
Интернет
Компьютер
Комплектующие компьютера
Лекции
Методы и средства измерений неэлектрических величин
Обслуживание компьютерных и периферийных устройств
Операционные системы
Параллельное программирование
Проектирование электронных средств
Периферийные устройства
Полезные ресурсы для программистов
Программы для программистов
Статьи для программистов
Cтруктура и организация данных