Структура кода команды и формирование смещения в сегменте



Смещение в сегменте кода команд извлекается из регистра EIP.

Механизм формирования смещения в сегменте данных проводится на основе режима адресации операнда.

Команды в архитектуре IA-32 имеют большое разнообразие форматов, которые зависят от типа операции, режимов адресации операндов, длины используемых непосредственных операндов и смещений и ряда других факторов. Они имеют длину от 1 до 15 байт. Все это существенно затрудняет их декодирование в МП с данной архитектурой. На рисунках 7.4  и 7.5 представлен формат двухоперандной команды общего вида.

 

Рисунок 7.4 – Формат команды 32-разрядного микропроцессора

 

Рисунок 7.5

 

Команда может начинаться с нескольких необязательных байт (префиксов), которые определяют особенности выполнения команды. Префиксы размеров длины адреса и операндов позволяют изменить их значения, установленные по умолчанию битом размерности D в дескрипторе сегмента. Для операндов совместно с битом w, содержащимся в коде команды, префикс размера позволяет определить операнд длиной 8, 16 или 32 разряда. Префикс размера адреса определяет 16- или 32‑разрядное смещение в сегменте, значение которых приведено в таблице 7.1.

 

Таблица 7.1 - Использование префиксов переопределения размеров адресов и операндов

Бит размерности D в дескрипторе сегмента 0 0 0 0 1 1 1 1
Префикс размерности Операнда* - - + + - - + +
Префикс размерности адреса* - + - + - + - +
Разрядность операнда (бит)** 16/8 16/8 32/8 32/8 32/8 32/8 16/8 16/8
Разрядность адреса (бит) 16 32 16 32 32 16 32 16

 

Примечания:

* + - префикс присутствует;

- - префикс отсутствует.

** w = 1/0

 

В коде команды могут использоваться также дополнительные байты для префикса замены сегментного регистра, установленного по умолчанию, префикса повторения операции или префикса, предотвращающего прерывания операции перемещения данных.

Поле КОП содержит код выполняемой команды, а также бит w размерности используемых операндов. Для команд, применяющих непосредственный операнд, код операции может также занимать также часть постбайта.

Постбайт, изображенный на рисунке 7.6, определяет местоположение операндов. Основная часть команд микропроцессора с архитектурой IA-32 позволяет работать только с одним операндом, находящимся в оперативной памяти. Его режим адресации кодируется полями md и r/m постбайта. Второй операнд либо извлекается из регистров общего назначения.

 

Рисунок 7.6 - Формат постбайта

 

Байт масштабируемого индекса базы (SIB) служит для представления сложных структур памяти. На его наличие указывает код 100 в поле r/m постбайта. SIB-байт имеет структуру, изображенную на рисунке 7.7.

 

Рисунок 7.7 - Формат SIB-байта

 

SS - поле масштаба;

Index -  задает номер одного из РОН, используемого в качестве индексного регистра (регистр ESP не может быть регистром индекса);

Base  - в комбинации с полем mod постбайта указывает регистр базы и смещение для индексированных операндов.

 

Контрольные вопросы:

1. Объяснить организацию физического представления памяти.

2. Объяснить организацию логического представления памяти.

3. Как организован механизм формирования физического адреса?

4. Объяснить структуру кода команды и формирование смещения в сегменте.

 


Дата добавления: 2019-09-13; просмотров: 66;