Статус нашего сайта: |
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 |
Таненбаум Э.- Архитектура компьютера. стр.308Поддерживаются также команды умножения, деления с учетом знака и деления без учета знака. Кроме того, поддерживается специальный формат 30-разрядных чисел с автоматическим опознаванием типа данных за счет поля тега. Этот формат используется для таких языков, как Smalltalk и Prolog, в которых тип переменных может меняться во время выполнения программы. При наличии таких чисел компилятор вставляет, например, команду ADD, а во время выполнения программы машина определяет, какая именно команда ADD нужна в данном случае, целочисленная или с плавающей точкой. Группа команд сдвига включает одну команду сдвига влево и две команды сдвига вправо. Каждая из них имеет два варианта: 32- и 64-разрядный. Команды сдвига в основном используются для манипулирования битами. Большинство CISC-машин имеют довольно много разнообразных команд обычного и циклического сдвига, но практически все они совершенно бесполезны. Логические команды аналогичны арифметическим. Эта группа включает команды AND (И), OR (ИЛИ), X0R (ИСКЛЮЧАЮЩЕЕ ИЛИ), ANDN (НЕ-И), 0RN (НЕ-ИЛИ) и XN0R (ИСКЛЮЧАЮЩЕЕ НЕ-ИЛИ). Полезность последних трех команд сомнительна, но они могут выполняться за один цикл и не требуют практически никакого дополнительного аппаратного обеспечения, а потому часто включаются в набор команд. Даже разработчики RISC-машин порой поддаются искушению. Следующая группа содержит команды передачи управления. Символами ВРсс обозначена группа команд, которые совершают переходы в зависимости от различных условий, а также указывают компилятору, требуется или нет прогнозирование ветвлений. Команды ВРг проверяют регистры и совершают переход, если условие подтверждается. Предусмотрено два способа вызова процедур. Для команды CALL используется вариант 4 формата с 30-разрядным смещением (см. рис. 5.11). Этого значения достаточно для того, чтобы добраться до любой команды в пределах 2 Гбайт от вызывающего оператора в любом направлении. Команда CALL копирует адрес возврата в регистр R15, который после вызова превращается в регистр R31. Второй способ вызова процедуры — использование команды JMPL в варианте 1а или lb формата (см. рис. 5.11). Эта команда позволяет помещать адрес возврата в любой регистр. Такая форма может быть полезной в том случае, если целевой адрес вычисляется в ходе выполнения программы. Команды SAVE и RESTORE манипулируют регистровым окном и указателем стека. Обе команды совершают прерывание, если следующее (предыдущее) окно недоступно. В последней группе содержатся команды, не попавшие ни в одну из других групп. Команда SETHI введена из-за невозможности поместить 32-разрядный непосредственный операнд в регистр. Команда SETHI устанавливает биты с 10-го по 31-й, а затем следующая команда передает оставшиеся биты, используя непосредственный формат. Команда РОРС подсчитывает число установленных (единичных) битов в слове. Последние три команды предназначены для чтения и записи специальных регистров. Ряд широко распространенных CISC-команд, не представленных в табл. 5.10, можно легко смоделировать, использовав либо регистр GO, либо операнд-константу (см. вариант lb формата на рис. рис. 5.11). Некоторые из них перечислены в табл. 5.11. Эти команды распознаются ассемблером UltraSPARC III и часто вставляются в код компиляторами. При моделировании многих из них используется тот факт, что регистр GO связан с аппаратным нулем и запись в этот регистр не дает никакого эффекта. |