Адресные регистры (Address register) применяются для хранения адреса (или его части) ячейки в оперативной памяти. Этот адрес может участвовать в арифметических и логических операциях процессора. Во многих современных процессорах разделение регистров на адресные и регистры данных весьма условно: и в тех, и в других могут находиться как адрес, так и данные, а АЛУ не делает различий между адресом и данными. Однако в практике программирования до сих пор за определенными регистрами закрепилась функция хранения части адреса ячейки памяти. Более того, в микропроцессорах Motorola серии MC680x0 только адресные регистры могут использоваться в операциях адресации памяти, а за регистром A7 закреплена функция вершины стека.
Существуют следующие адресные регистры:
Базовый регистр (Base) – служит для указания начального адреса объекта в памяти при операциях с массивами и неявной адресации. Подробнее о массивах смотри [А.В. Нестеренко. ЭВМ и профессия программиста. – М.: Просвещение, 1990 - стр. 64] и приложение A данной книги, а о неявной адресации – смотри раздел D.3, посвященный адресации памяти.
Указатель стека (Stack Pointer) – неявно используется в некоторых процессорах (в частности, Intel и Motorola) для организации работы со стеком. В качестве таких операций может служить, например, операции записи в стек и извлечения из стека, вызов подпрограммы и возврат в нее, вызов программ обработки прерываний, возврат из прерывания, переключения на другую задачу, изменение текущего уровня привилегий и некоторые другие. В микропроцессорах семейства x86 в качестве указателя стека используется регистр SP (ESP в 32-х разрядных версиях), который адресует вершину стека в текущем сегменте стека. В микропроцессорах Motorola серии MC680x0 в качестве регистра-указателя стека используется адресный регистр A7, который как бы делится на указатель стека супервизора SSP (содержимое которого изменить невозможно) и указателя стека пользователя USP, изменять содержимое которого можно только в режиме супервизора. Подробнее о стеке смотри [В.Л. Григорьев. Микропроцессор i486. Книга 1. Архитектура и программирование. – М.: ГРАНАЛ. 1993 - с. 446; ил. – стр. 61-63]
Указатель базы (Base Pointer) – используется для удобства доступа к данным в стеке, которые не находятся в его вершине (например, параметры подпрограмм, переменные с модификатором auto в программах на Си и т.д.)
К адресным регистрам можно отнести регистры сегментного и страничного разделения памяти, а также селекторы сегментов. Но о них будет сказано ниже в отдельном разделе.
Назад... К оглавлению раздела Далее...
=== *** === *** === *** ===
Copyright © Юрий А. Денисов. 2000-2002 г.
В настоящее время проект закрыт (в версии 1.00.3 alpha). Автор приносит извинения за прекрашение разработки.