Статус нашего сайта: |
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 |
Таненбаум Э.- Архитектура компьютера. стр.209ОРС — временный регистр. У него нет определенного назначения. В нем, например, может храниться адрес кода операции для команды перехода, пока значение РС увеличивается, чтобы получить доступ к параметрам. Он также используется в качестве временного регистра в командах условного перехода. Как и все интерпретаторы, микропрограмма, приведенная в табл. 4.3, включает в себя основной цикл, который вызывает, декодирует и выполняет команды интерпретируемой программы (в данном случае IJVM-команды). Основной цикл начинается со строки Mainl, а именно — с инварианта (утверждения), что в регистр РС уже загружен адрес ячейки памяти, в которой содержится код операции. Более того, этот код операции уже вызван из памяти в регистр MBR. Когда мы вернемся к этой ячейке, мы должны быть уверены, что значение РС уже обновлено и указывает на код следующей операции, а сам код операции уже вызван из памяти в MBR. Такая последовательность действий имеет место в начале каждой команды, поэтому важно сделать ее как можно более короткой. Разрабатывая аппаратное и программное обеспечение микроархитектуры Mic-1, мы смогли сократить основной цикл до одной микрокоманды. Каждый раз, когда выполняется эта микрокоманда, код выполняемой операции уже находится в регистре MBR. Эта микроко манда, во-первых, осуществляет переход к микрокоду, выполняющему данную операцию, во-вторых, вызывает следующий после кода операции байт, который может быть либо операндом, либо кодом операции. Теперь мы можем объяснить главную причину того, почему в каждой микрокоманде явным образом указывается следующая микрокоманда, а последовательность команд может не соответствовать порядку их расположения в памяти. Все адреса управляющей памяти, соответствующие кодам операций, должны быть зарезервированы для первого слова интерпретатора соответствующей команды. Так, из табл. 4.2 мы видим, что программа, которая интерпретирует команду POP, начинается в ячейке 0x57, а программа, которая интерпретирует команду DUP, начинается в ячейке 0x59. (Как язык MAL узнает, что команду POP нужно поместить в ячейку 0x57 — одна из загадок Вселенной. Предположительно, где-то существует файл, который сообщает ему об этом.) К сожалению, программа, интерпретирующая команду POP, включает в себя три микрокоманды, поэтому если их расположить в памяти последовательно, то эта программа смешается с началом команды DUP. Поскольку все адреса управляющей памяти, которые соответствуют кодам операций, зарезервированы, то все микрокоманды, идущие после первой микрокоманды в каждой последовательности, должны размещаться в промежутках между зарезервированными адресами. По этой причине происходит очень много «скачков», и было бы нерационально каждый раз вставлять микрокоманду перехода, чтобы перейти от одной последовательности адресов к другой. Чтобы понять, как работает интерпретатор, предположим, что регистр MBR содержит значение 0x60, то есть код операции IADD (см. табл. 4.2). В основном цикле, который состоит из одной микрокоманды, выполняется следующее: |