Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.545


Таненбаум Э.- Архитектура компьютера. стр.545

Регистры-указатели

Во второй группе регистров содержатся регистры-указатели и индексные регистры. Наиболее важным регистром из этой группы считается указатель стека (SP). Стеки играют важную роль в большинстве языков программирования. Стек — это сегмент памяти, в котором хранятся те или иные данные, связанные с контекстом исполняемой программы. Как правило, при вызове процедуры часть стека резервируется для хранения ее локальных переменных, адреса, по которому нужно будет возвратиться по окончании процедуры, и ряда других данных управления. Часто стек, связанный с выполнением процедуры, называется стековым фреймом. Когда ранее вызванная процедура вызывает другую процедуру, выделяется дополнительный стековый фрейм, который, как правило, размещается непосредственно под первым. Соответственно, при вызове всех последующих процедур для каждой из них в нисходящем порядке выделяются новые стековые фреймы. Не всегда, но в большинстве случаев стеки прирастают по нисходя щей — от больших адресов к меньшим. Тем не менее, вершиной стека называется наименьший по величине адрес.

Помимо локальных переменных, в стеках хранятся временные результаты выполнения. В процессоре 8088 есть команда PUSH, которая помещает 16-разрядное слово на вершину стека. Для этого она сначала уменьшает значение регистра SP на 2, а затем сохраняет свой операнд по адресу, на который этот регистр указывает после обновления. Команда POP удаляет 16-разрядные слова с вершины стека аналогичным образом — выбирает размещенное на этой вершине значение и прибавляет к содержимому регистра SP двойку. Регистр SP, указывающий на вершину стека, можно изменить командами PUSH, POP и CALL; при этом PUSH и CALL уменьшают его значение, a POP, наоборот, увеличивает.

Следующий регистр в этой группе называется указателем базы (BP). Обычно в него записывается некий адрес в стеке. В отличие от регистра SP, который всегда указывает на вершину стека, BP может указывать на любое место в стеке. Чаще всего регистр BP применяется для указания на начало стекового фрейма текущей процедуры; тем самым упрощается задача поиска ее локальных переменных. Таким образом, BP часто указывает дно текущего стекового фрейма (иными словами, на слово в стековом фрейме с наименьшим числовым значением), a SP — на его вершину (на слово в стековом фрейме с наибольшим числовым значением). Следовательно, границы текущего стекового фрейма определяются значениями регистров-указателей BP и SP.

В этой группе есть два индексных регистра: SI (Source Index — индекс источника) и DI (Destination Index — индекс приемника). В сочетании с BP эти регистры часто употребляются для адресации данных в стеке, а в сочетании с ВХ — для вычисления адресов памяти. Более подробно о применении этих регистров мы поговорим в разделе, посвященном режимам адресации.

Один из важнейших регистров, составляющий самодостаточную группу, называется указателем команд; этот термин введен Intel, в общем случае такой регистр называется счетчиком команд (PC). Команды обращаются к нему за адресами кодовых сегментов в памяти. Цикл выполнения команд процессором начинается с выборки команды, на которую указывает регистр PC. Перед выполнением последующих команд цикла к значению этого регистра прибавляется единица. Таким образом, счетчик команд всегда указывает на первую команду вслед за текущей.


⇐ Предыдущая страница| |Следующая страница ⇒

Карта Сайта