Формат машинных команд IA-32
Машинная команда представляет собой закодированное по определенным прави-
лам указание процессору на выполнение некоторой операции. Правила кодирова-
ния команд называются форматом команд. Команды процессоров архитектуры
IA-32 считаются сложными. Максимальная длина машинной команды IA-32 со-
ставляет
байт. Реальная команда может содержать гораздо меньшее количество
полей, вплоть до одного — только код операции. Приведенный на рис.
формат
машинной команды является наиболее полным.
Как на уровне формата машинной команды соответствуют между собой машин-
ные команды и команды ассемблера? Для примера рассмотрим типичную коман-
ду языка ассемблера:
e b x , eax
Команда
производит копирование содержимого регистра
в регистр ЕВХ.
Соответствующая машинная команда будет выглядеть так:
D8
Значение 8В — код операции. Еще один пример команды
e c x , 128
Данная команда инициализирует содержимое регистра ЕСХ десятичным значе-
нием
Соответствующая машинная команда выглядит так:
00000080
Значение поля с кодом операции — В9. Из примеров видно, что прямого соот-
ветствия между структурой команды ассемблера и соответствующей машинной
командой нет. Несмотря на то, что команда ассемблера одна и та же
коды
машинных команд — разные (8В и В9). Большинство команд ассемблера имеют
несколько возможных вариантов сочетания операндов. Как показано приве-
денных примерах, несмотря на одинаковые названия команд ассемблера, для
60 Глава 3. Система команд процессора IA32
Однобайтовые
префиксы
Г повторения
| размера адреса
размера операнда
замены сегмента
| блокировки шины
! КОП
Количество байтов
код
операции
i КОП
7 6 5 4 3
КОП
7 6 5 4 3
КОП
7 6 5 4 3
КОП
i 7 6 5 4 3
I
, I
0 или 1
байт
w
2 1 о;
w
s w
reg
index
base
| mod |
|
|
Рис.
Формат машинной команды
каждого возможного сочетания операндов имеется своя машинная команда, со сво-
им значением поля кода операции (рис.
Это говорит о том, что машинная ко-
манда всегда однозначна по отношению к производимым ею действиям на уровне
аппаратуры. Несколько упрощая реальность, можно утверждать, что значение
в поле кода операции является номером микропрограммы в блоке микропрограмм-
ного управления для каждой конкретной команды ассемблера с каждым конкрет-
ным вариантом сочетания операндов.
Логически любая команда языка ассемблера содержит несколько элементов.
Элемент, описывающий, что делать, называется кодом операции (КОП). Зна-
чение в поле кода операции некоторым образом определяет в блоке микропрог-
раммного управления подпрограмму, реализующую действия для данной ко-
манды.
в Элементы, описывающие объекты, с которыми нужно что-то
являют-
ся операндами. Операнды в команде могут и не задаваться, а подразумеваться
по умолчанию.
и Элементы, описывающие, как
являются типами
и обычно
задаются неявно. Они используются транслятором ассемблера при формиро-
вании машинной команды для определения значения поля кода операции.
Эти же элементы имеет и машинная команда, но в закодированном виде. Пере-
вод команд ассемблера в соответствующие машинные команды осуществляет спе-
циальная программа — ассемблер, которую можно также назвать транслятором
(компилятором) ассемблера.
Опишем назначения полей машинной команды (рис.
Формат машинных команд IA-32
Do'stlaringiz bilan baham: |