Статус нашего сайта: |
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 |
Таненбаум Э.- Архитектура компьютера. стр.206Для условных переходов нам требуется другая запись. Помните, что JAMN и JAMZ используют биты N и Z соответственно. Например, иногда нужно проверить, не равно ли нулю значение регистра. Для этого можно было бы пропустить это значение через АЛУ, сохранив его после этого в том же регистре. Тогда мы бы написали TOS = TOS Запись выглядит забавно, но выполняет необходимые действия (устанавливает триггер Z и записывает значение в регистре TOS). В целях удобочитаемости микропрограммы мы расширили язык MAL, добавив два новых воображаемых регистра, N и Z, которым можно присваивать значения. Например: Z = TOS Эта строка пропускает значение регистра TOS через АЛУ, устанавливая триггер Z (и N), но при этом не сохраняет значение ни в одном из регистров. Использование регистра Z или N в качестве целевого показывает микроассемблеру, что нужно установить в 0 все биты поля С (см. рис. 4.4). Тракт данных проходит обычный цикл, выполняются все обычные допустимые операции, но ни один из регистров не записывается. Не важно, какой регистр является целевым, N или Z. Микрокоманды, которые при этом порождает микроассемблер, одинаковы. (Программисты, выбравшие не тот регистр, в наказание будут неделю работать на самом первом компьютере IBM PC с частотой 4,77 МГц.) Чтобы микроассемблер установил бит J AMZ, нужно написать следующее: if(Z) goto LI; else goto L2 Поскольку аппаратное обеспечение требует, чтобы 8 младших битов этих адресов совпадали, микроассемблер должен присвоить им такие адреса. С другой стороны, метка L2 может находиться в любом из младших 256 слов управляющей памяти, поэтому микроассемблер без труда найдет подходящую пару. Часто эти два утверждения сочетаются. Например: Z = TOS; irCZ) goto LI; else goto L2 В результате такой записи MAL породит микрокоманду, в которой значение регистра TOS пропускается через АЛУ, но при этом нигде не сохраняется, так что это значение устанавливает бит Z. Сразу после загрузки из АЛУ бит Z соединяется со старшим битом регистра MPC через схему ИЛИ, вследствие чего адрес следующей микрокоманды будет вызван либо по L2, либо по L1. Значение регистра MPC стабилизируется, и он сможет использовать его для вызова следующей микрокоманды. Наконец, нам нужна специальная запись, чтобы задействовать бит JMPC: goto (MBR OR value) Эта запись сообщает микроассемблеру, что нужно использовать значение value для поля NEXT_ADDRESS и установить бит JMPC, так чтобы регистр MBR соединялся через схему ИЛИ с регистром MPC вместе со значением NEXT_ADDRESS. Если значение value равно 0, достаточно написать goto (MBR) Отметим, что только 8 младших битов регистра MBR соединяются с регистром MPC (см. рис. 4.5), поэтому вопрос о знаковом расширении тут не возникает. Также отметим, что используется то значение MBR, которое доступно в конце текущего цикла. В момент вызова в текущей микрокоманде выбирать следующую микрокоманду уже поздно. Реализация IJVM с использованием микроархитектуры Mic-1 Сейчас мы уже дошли до того момента, когда можно соединить все части вместе. В табл. 4.3 приводится микропрограмма, которая работает на микроархитектуре Mic-1 и интерпретирует IJVM. Программа очень короткая — всего 112 микрокоманд. Таблица состоит из трех столбцов. В первом столбце дано символическое обозначение микрокоманды, во втором — сама микрокоманда, в третьем — комментарий. Как мы уже отмечали, последовательность микрокоманд не обязательно соответствует последовательности адресов в управляющей памяти. |