Глава 12. Регистры
Типы регистров
Память в компьютере имеет иерархическую структуру. Чем более высокое положение в иерархии занимает определенный блок памяти, тем выше его быстродействие, меньше объем и выше стоимость хранения в пересчете на 1 разряд (бит).
Набор регистров процессора – это память самого верхнего уровня иерархии подсистемы памяти компьютера.
По выполняемым функциям регистры процессора делятся на программно доступные регистры и регистры управления и состояния.
Программно доступные регистрыпозволяют программисту, разрабатывающему программы на машинном языке или на языке ассемблера, минимизировать в программе обращения к оперативной памяти и, где это возможно, использовать для хранения операндов и промежуточных результатов быстродействующую внутреннюю память процессора.
Регистры управления и состояния используются для управления функционированием процессора. К этим регистрам иногда могут иметь доступ специальные привилегированные команды, которые используются только в программах операционной системы.
|
|
Не существует раз и навсегда узаконенного разделения регистров на эти категории. Например, в большинстве компьютеров счетчик команд (РС) программно недоступен, но существуют и компьютеры, в которых он доступен со стороны программы, как и любой другой регистр. В дальнейшем будет использоваться разделение регистров на эти две категории.
Программно доступные регистры
Программно доступные регистры, в свою очередь, можно разделить на несколько категорий:
• регистры общего назначения (или универсальные регистры);
• регистры данных;
• регистры адреса;
• регистры кодов условий.
Регистры общего назначения программист может использовать по своему усмотрению для выполнения самых разных функций. Иногда система команд никак не связывает их функции с выполняемой операцией (это бывает в системах команд, в которых поля кода операций и операндов ортогональны). В таком случае действительно имеют дело с универсальными регистрами, т.е. любой регистр может использоваться для спецификации любого операнда в любой машинной команде. Но в некоторых архитектурах возможность применения того или иного регистра все-таки в определенной мере ограничивается. Например, для работы с системным стеком и числами в формате с плавающей точкой используются не любые, а только определенные регистры.
В некоторых структурах процессоров регистры общего назначения можно применять для адресации операндов (т.е. косвенной адресации через регистр, адресации со смещением и т.п.). В других структурах существует жесткое разделение между регистрами адреса и регистрами данных.
|
|
Регистры данных разрешается использовать только для хранения операндов и результатов, но они не принимают участия в вычислении исполнительного адреса. В некоторых архитектурах имеются отдельные регистры для хранения данных с фиксированной точкой и регистры для хранения данных с плавающей точкой.
Регистры адреса могут быть в определенной степени универсальными, а могут и предназначаться только для определенного режима адресации. Ниже приведены некоторые регистры адреса.
Сегментные регистры. В компьютерах с сегментной организацией оперативной памяти предназначены для хранения адреса сегмента.
Индексные регистры. Эти регистры используются в режимах адресации с индексацией, и в некоторых процессорах при обращении к ним автоматически выполняется приращение или уменьшение значения на 1 (происходит автоиндексация).
Указатель стека. Если в компьютере механизм управления системным стеком программно доступен, то стек размещается в оперативной памяти и выделяется специальный регистр, который содержит текущее значение указателя вершины стека.