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

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


Таненбаум Э.- Архитектура компьютера. стр.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 связан с аппаратным нулем и запись в этот регистр не дает никакого эффекта.


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

.