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.
⇐ Предыдущая страница| |Следующая страница ⇒
|