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




Набор регистров

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

· Первую группу образуют пользовательские регистры, к которым относятся:

o регистры общего назначения EAX/AX/AH/AL, EBX/BX/BH/BL, EDX/DX/DH/DL, ECX/CX/CH/CL, EBP/BP, ESI/SI, EDI/DI, ESP/SP предназначены для хранения данных и адресов, программист может их использовать (с определенными ограничениями) для реализации своих алгоритмов;

o сегментные регистры CS, DS, SS, ES, FS, GS служат для хранения значений, интерпретация которых зависит от режима работы процессора. В реальном режиме сегментные регистры содержат адрес параграфа начала сегмента в памяти. В защищенном режиме сегментные регистры хранят индекс входа в одну из системных таблиц дескрипторов — GDT или LDT;

o регистры сопроцессора ST(0), ST(1), ST(2), ST(3), ST(4), ST(5), ST(6), ST(7) предназначены для написания программ, оперирующих данными с плавающей запятой;

o целочисленные регистры целочисленного MMX-расширения MMX0, MMX1, MMX2, MMX3, MMX4, MMX5, MMX6, MMX7;

o регистры XMM-расширения с плавающей запятой XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7; регистры состояния и управления (регистр флагов EFLAGS/FLAGS и регистр указателя команды EIP/IP) содержат информацию о состоянии процессора, исполняемой программы и позволяют изменить это состояние.

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

o управляющие регистры CR0–CR4 — определяют режим работы процессора и характеристики текущей исполняемой задачи;

o регистры управления памятью GDTR, IDTR, LDTR и TR используются в защищенном режиме работы процессора для локализации управляющих структур этого режима;

o отладочные регистры DR0–DR7 предназначены для контроля и управления различными аспектами отладки;

o регистры типов областей памяти MTRR используются для аппаратного управления кэшированием в целях назначения соответствующих свойств областям памяти;

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

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

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

· операндов команд целочисленного устройства;

· адресов и компонентов адреса.

На хранение операндов не накладываются особые ограничения, но в определенных условиях некоторые из регистров имеют жесткое функциональное назначение, закрепленное на уровне логики работы машинных команд. В этой связи среди всех регистров общего назначения особо следует выделить регистр ESP. В нем хранится указатель на вершину стека программы, и хранить здесь какие-либо операнды неразумно и небезопасно.
Перечислим регистры, относящиеся к группе регистров общего назначения и физически находящиеся в процессоре внутри арифметико-логического устройства (регистры АЛУ):

· регистр-аккумулятор (accumulator register) EAX/AX/AH/AL применяется для хранения промежуточных данных, в некоторых командах его использование обязательно;

· базовый регистр (base register) EBX/BX/BH/BL задуман как место хранения базового адреса некоторого объекта в памяти;

· регистр-счетчик (count register) ECX/CX/CH/CL применяется в командах, производящих некоторые многократные действия;

· регистр данных (data register) EDX/DX/DH/DL, так же как и регистр EAX/AX/AH/AL, хранит промежуточные данные (в некоторых командах его явное использование обязательно, в других его участие подразумевается неявно). Следующие два регистра предназначены для поддержки так называемых цепочечных операций, то есть операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32, 16 или 8 бит:

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

· регистр индекса приемника (destination index register) EDI/DI в цепочечных операциях содержит текущий адрес в цепочке-приемнике. Для работы со стеком в системе команд процессора есть специальные команды, а в программной модели процессора для этого существуют специальные регистры:

· регистр указателя стека (stack pointer register) ESP/SP содержит указатель на вершину стека в текущем сегменте стека;

· регистр указателя базы кадра стека (base pointer register) EBP/BP предназначен для организации произвольного доступа к данным внутри стека.

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

Процессоры Intel аппаратно поддерживают сегментную организацию программы. Это означает, что любая программа состоит как минимум из трех сегментов: кода, данных и стека. Логически машинные команды в архитектуре IA-32 построены так, что при выборке каждой команды для доступа к данным программы или к стеку неявно используется информация из вполне определенных сегментных регистров. В зависимости от режима работы процессора по их содержимому определяются адреса памяти, с которых начинаются соответствующие сегменты. В программной модели IA-32 имеется шесть сегментных регистров CS, SS, DS, ES, GS, FS, служащих для доступа к четырем типам сегментов.

· Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр сегмента кода (code segment register) CS. Он содержит значение, которое по-разному интерпретируется процессором, в зависимости от текущего режима работы. В реальном режиме — это адрес первого параграфа сегмента, в защищенном — индекс элемента в таблице дескрипторов (глобальной GDT или локальной LDT).

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

· Сегмент стека. Представляет собой область памяти, называемую стеком. Работу со стеком процессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Доступ к области стека выполняется через регистр сегмента стека (stack segment register) SS, содержащий адрес сегмента стека.

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: