русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


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труктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.092 сек.