Статус
нашего
сайта:
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

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


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

Таблица 4.3 {продолжение)

Микрокоманда

Операции

Комментарий

туоке^гшаЮ

н = мвн:и или н

Н = смещение указателя процедуры от регистра СРР

\п\/оке_\/\Пиа\4

МАн: = СРР+Н; гс1

Вызов указателя процедуры из набора констант

1гмэке_у1гтиа15

ОРС = РС + 1

Временное сохранение значения РС в регистре ОРС

1гмэке_мгтиа16

РС = МРИ/, ТеЮп

Регистр РС указывает на новую процедуру; вызов числа параметров

т70ке_у||1иа17

рс = РС + 1; Те1сп

Вызов второго байта числа параметров

туоке_>лПиа18

Н = МВРи « 8

Сдвиг первого байта на 8 бит

и сохранение значения в регистре Н

тгоке^гтиаЮ

н = мвпи ИЛИ н

Н = число параметров

туоке^НиаИО

рс = рс+ 1;Те1сп

Вызов первого байта размера области локальных переменных

1пуоке_у||1иа111

ТОЭ = ЭР - н

ТОЭ = адрес ОВ0РЕР-1

туоке_уНиа112

ТОЭ = МАР = ТОЭ + 1

ТОЭ = адрес ОВ^ЕЕ (новое значение

1т/оке_мПиа113

рс = рс + ^',1e\ch

Вызов второго байта размера области локальных переменных

1т/оке_мгша114

н = мвн:и « 8

Сдвиг первого байта на 8 бит

и сохранение значения в регистре Н

1т/оке_у1гт.иа115

н = мвн:и или н

Н = размер области локальных переменных

туоке_ун1иа116

мон: = 8Р + н + 1\ш

Перезапись ОВОРЕР со связующим указателем

1т/оке_у1гт.иа117

МАЯ = ЭР = МОЯ

Установка регистров ЭР и мая на адрес ячейки, в которой содержится старое значение РС

1гмэке_у1гша118

МОР = ОРС; ш

Сохранение старого значения РС над локальными переменными

1т/оке_у'||1иа119

МАЯ = БР = ЭР + 1

ЭР указывает на ячейку, в которой хранится старое значение

1т/оке_М11иа120

МРР = 1Л/; ш

Сохранение старого значения над сохраненным значением РС

т7оке_у||1иа121

рс = рс + г,1егсь

Вызов первого кода операции новой процедуры

1тгоке_у||1иа122

О/ = ТОЭ; до1о Мат1

Установка значения на первый адрес фрейма локальных переменных

1геШт1

МАР = ЭР = 1Л/; гб

Переустановка регистров ЭР и мая для вызова связующего указателя

1геШгп2

 

Процесс считывания

1геШгпЗ

14 = МАЯ = МРР; гс1

Установка регистра на связующий указатель; вызов старого значения РС

1ге1ит4

МАЯ = 1Л/ + 1

Установка регистра мар на чтение старого значения

Микрокоманда

Операции

Комментарий

ireturn5

PC = MDR; rd; fetch

Восстановление PC; вызов следующего кода операции

ireturn6

MAR = SP

Установка MAR на запись TOS

ireturn7

LV = MDR

Восстановление LV

ireturn8

MDR = TOS; wr; goto Mainl

Сохранение результата в исходной вершине стека

Выбор названий для большинства регистров, изображенных на рис. 4.1, должен быть очевидным. Регистры СРР (Constant Pool Pointer — указатель набора констант), LV (Local Variable — локальная переменная) и SP (Stack Pointer — указатель стека) содержат указатели на адреса набора констант, фрейма локальных переменных и верхнего элемента в стеке соответственно, а регистр РС (Program Counter — счетчик команд) содержит адрес байта, который нужно вызвать из потока команд следующим. Регистр MBR (Memory Buffer Register — буферный регистр памяти) — это однобайтный регистр, который содержит байты потока команд, поступающих из памяти для интерпретации. TOS и ОРС — дополнительные регистры. Они описываются далее.

В определенные моменты в каждом из этих регистров обязательно находится определенное значение. Однако каждый из них в случае необходимости может также использоваться в качестве временного. В начале и конце каждой команды регистр TOS (Top Of Stack — вершина стека) содержит значение адреса памяти, на который указывает SP. Это значение избыточно, поскольку его всегда можно считать из памяти, но если хранить это значение в регистре, то обращение к памяти не потребуется. Для некоторых команд использование регистра TOS, напротив, влечет за собой большее количество обращений к памяти. Например, команда POP отбрасывает верхнее слово стека и, следовательно, должна вызвать новое значение вершины стека из памяти и записать его в регистр TOS.


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

.