Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander
Yurievich
Структура кода команды
Команды в архитектуре IA-32 имеют большое разнообразие форматов, которые зависят от типа операции, режимов адресации операндов, длины используемых непосредственных операндов и смещений и ряда других факторов. Они имеют длину от 1 до 15 байт.
Формат двухоперандной команды общего вида:
Команда может начинаться с нескольких необязательных байтов (префиксов), которые определяют особенности выполнения команды.
Для операндов совместно с битом W, содержащимся в коде команды, префикс размера позволяет определить операнд длиной 8, 16 или 32 разряда.
В коде команды могут использоваться также дополнительные байты для:
● префикса замены сегментного регистра, установленного по умолчанию,
● префикса повторения операции,
● префикса, предотвращающего прерывание операции перемещения данных.
Поле КОП содержит код выполняемой команды, а также бит W размерности используемых операндов. Для команд, применяющих непосредственный операнд, код операции может также занимать часть постбайта.
Формат постбайта
Постбайт определяет местоположение операндов.
Основная часть команд микропроцессора с архитектурой IA-32 позволяет работать только с одним операндом, находящимся в оперативной памяти. Его режим адресации кодируется полями md и r/m постбайта.
Второй операнд либо извлекается из регистров общего назначения микропроцессора (его номер указывается в поле reg постбайта), либо кодируется в поле Imm самой команды (непосредственный операнд).
Байт масштабируемого индекса базы (SIB) служит для представления сложных структур памяти. На его наличие указывает код 100 в поле r/m постбайта.
Формат SIB-байта