double arrow

Сегментные регистры

Понятие программной модели IA-32.

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

Программную модель микропроцессора Intel составляют: 1 - пространство адресуемой памяти;

2 - набор регистров для хранения данных общего назначения;

3 - набор сегментных регистров;

4 - набор регистров состояния и управления;

5 - набор регистров устройства вычислений с плавающей точкой (сопроцессора);

6 - набор регистров целочисленного MMX-расширения, отображенных на регистры сопроцессора;

7 - набор регистров SSE-расширения с плавающей точкой;

8 - программный стек. Это специальная информационная структура, работа с которой предусмотрена на уровне машинных команд.

Регистры общего назначения.

Регистры общего назначения используются в программах для хранения:

1 - операндов логических и арифметических операций;

2 - компонентов адреса;

3 - указателей на ячейки памяти.

Все регистры этой группы позволяют обращаться к своим «младшим» частям. Использовать для самостоятельной адресации можно только младшие 16- и 8-битные части этих регистров. Старшие 16 битов этих регистров как самостоятельные объекты недоступны.

Регистры, относящиеся к группе регистров общего назначения:

- EAX/AX/AH/AL (Accumulator register) – аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;

- EBX/BX/BH/BL (Base register) – базовый регистр. Применяется для хранения базового адреса некоторого объекта в памяти;

- ECX/CX/CH/CL (Count register) – регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия (например команда организации цикла LООР, кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра ЕСХ).

- EDX/DX/DH/DL (Data register) – регистр данных. Так же как и регистр ЕАХ/AX/AH/AL, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.

Регистры ESI и EDI используются для поддержки так называемых цепочечных операций, то есть операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32, 16 или 8 бит:

- ESI/SI (Source Index register) – индекс источника. Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике;

- EDI/DI (Destination Index register) – индекс приемника {получателя). Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике.

Для работы со стеком в системе команд микропроцессора есть специальные команды, а в программной модели микропроцессора для этого существуют следующие специальные регистры:

- ESP/SP (Stack Pointer register) – регистр указателя стека. Содержит указатель вершины стека в текущем сегменте стека (регистр ESP не следует использовать явно для хранения каких-либо операндов программы, так как в нем хранится указатель на положение вершины стека программы);

- EBP/BP (Base Pointer register) – регистр указателя базы кадра стека. Предназначен для организации произвольного доступа к данным внутри стека.

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

Сегментные регистры.

В программной модели микропроцессора имеется шесть сегментных регистров: CS, SS, DS, ES, GS, FS. Сегментные регистры предназначены для обеспечения доступа к оперативной памяти.

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

- Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр CS (code segment register) – сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть эти команды загружаются в конвейер микропроцессора);

- Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр DS (data segment register) – сегментный регистр данных, который хранит адрес сегмента данных текущей программы;

- Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Для доступа к этому сегменту служит регистр SS (stack segment register) – сегментный регистр стека, содержащий адрес сегмента стека;

- Дополнительный сегмент данных. Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в сегментном регистре DS. Адреса дополнительных сегментов данных содержатся также в регистрах ES, GS, FS (extension data segment registers).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: