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
|
Таненбаум Э.- Архитектура компьютера. стр.307
Таненбаум Э.- Архитектура компьютера. стр.307
Команды UltraSPARC III
Все целочисленные команды пользовательского режима UltraSPARC III перечислены в табл. 5.10, при этом используются следующие обозначения:
♦
|
SRC — регистр-источник;
|
♦
|
DST — регистр-приемник;
|
♦
|
R1 — регистр-источник;
|
♦
|
S2 — источник (регистр или непосредственно данные);
|
♦
|
ADDR — адрес памяти;
|
♦
|
TRAP# — номер системного прерывания;
|
♦
|
FCN — код функции;
|
♦
|
MASK — тип операции;
|
♦
|
CON — константа;
|
♦
|
V — обозначение регистра;
|
♦
|
СС — набор кодов условия;
|
♦
|
R — регистр-приемник;
|
♦
|
сс — условие;
|
♦
|
г - LZ, LEZ, Z, NZ, GZ или GEZ.
|
В таблице не представлены команды с плавающей точкой, команды управления (например, команды управления кэш-памятью, команды перезагрузки системы), команды, включающие отличные от пользовательских адресные пространства, устаревшие команды. Набор команд удивительно мал. Оно и понятно, ведь UltraSPARC III — это RISC-процессор.
Структура команд LOAD и STORE очень проста. Эти команды имеют варианты для 1, 2, 4 и 8 байт. Если в 64-разрядный регистр загружается число размером меньше 64 бит, это число может быть либо расширено по знаку, либо дополнено нулями. Существуют команды для обоих вариантов.
Следующая группа команд предназначена для арифметических операций. Команды с буквами СС в названии устанавливают биты кода условия. В CISC-машинах большинство команд устанавливают коды условия, но в RISC-машине это нежелательно, поскольку ограничивает способность компилятора сортировать команды, чтобы минимизировать задержки.
Таблица 5.10. Основные команды процессора UltraSPARC III
Команда
|
Описание
|
Команды загрузки
|
|
LDSB ADDR, DST
|
Загрузка байта со знаком (8 бит)
|
intbl@tabl_body = LDUB ADDR, DST
|
Загрузка байта без знака (8 бит)
|
LDSH ADDR, DST
|
Загрузка полуслова со знаком (8 бит)
|
LDUH ADDR, DST
|
Загрузка полуслова без знака (16 бит)
|
LDSW ADDR, DST
|
Загрузка слова со знаком (32 бита)
|
LDUW ADDR, DST
|
Загрузка слова без знака (32 бита)
|
LDX ADDR, DST
|
Загрузка расширенного слова (64 бита)
|
Команды сохранения
|
|
STB SRC, ADDR
|
Сохранение байта (8 бит)
|
STH SRC, ADDR
|
Сохранение полуслова (16 бит)
|
STW SRC, ADDR
|
Сохранение слова (32 бита)
|
STX SRC, ADDR
|
Загружает расширенное слово (64 бита)
|
Арифметические команды
|
|
ADD R1, S2, DST
|
Сложение
|
ADDCC
|
Сложение и установка кода условия
|
ADDC
|
Сложение с переносом
|
ADDCCC
|
Сложение с переносом и установкой кода
|
|
условия
|
SUB R1, S2, DST
|
Вычитание
|
SUBCC
|
Вычитание с установкой кода условия
|
SUBC
|
Вычитание с переносом
|
SUBCCC
|
Вычитание с установкой кода переноса
|
MULXR1, S2, DST
|
Умножение
|
SDIVXR1, S2, DST
|
Деление с учетом знака
|
UDIVX R1, S2, DST
|
Деление без учета знака
|
TADCCR1,S2, DST
|
Сложение с использованием поля тега
|
Команды обычного и циклического сдвига
|
|
SLLR1, S2, DST
|
Логический сдвиг влево (32 бита)
|
SLLXR1, S2, DST
|
Логический сдвиг влево (64 бита)
|
SRLR1, S2, DST
|
Логический сдвиг вправо (32 бита)
|
SRLXR1, S2, DST
|
Логический сдвиг вправо (64 бита)
|
SRAR1, S2, DST
|
Арифметический сдвиг вправо (32 бита)
|
SRAXR1, S2, DST
|
Арифметический сдвиг вправо (64 бита)
|
Логические команды
|
|
AND R1, S2, DST
|
Логическое И
|
ANDCC R1, S2, DST
|
Логическое И с установкой кода условия
|
ANDN R1, S2, DST
|
Логическое НЕ-И
|
Команда
|
Описание
|
ANDNCC R1. S2, DST
|
Логическое НЕ-И с установкой кода условия
|
OR R1. S2, DST
|
Логическое ИЛИ
|
ORCC R1, S2, DST
|
Логическое ИЛИ с установкой кода условия
|
ORN R1, S2, DST
|
Логическое НЕ-ИЛИ
|
ORNCC R1, S2, DST
|
Логическое НЕ-ИЛИ с установкой кода
|
|
условия
|
XOR R1. S2, DST
|
Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ
|
XORCC R1, S2, DST
|
Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ
|
|
с установкой кода условия
|
XNOR R1, S2, DST
|
Логическое ИСКЛЮЧАЮЩЕЕ НЕ-ИЛИ
|
XNORCC
|
Логическое ИСКЛЮЧАЮЩЕЕ НЕ-ИЛИ
|
|
с установкой кода условия
|
Команды передачи управления
|
|
BPcc ADDR
|
Переход с прогнозированием ветвлений
|
BPr SRC, ADDR
|
Переход в регистр
|
CALL ADDR
|
Вызов процедуры
|
RETURN ADDR
|
Выход из процедуры
|
JMPL ADDR, DST
|
Переход со связыванием
|
SAVE R1, S2, DST
|
Расширение регистровых окон
|
RESTORE R1, S2. DST
|
Восстановление регистровых окон
|
Тсс CC, TRAP#
|
Системное прерывание при определенном
|
|
условии
|
PREFETCH FNC
|
Выборка данных из памяти с упреждением
|
LDSTUB ADDR, R
|
Атомарная операция загрузки/сохранения
|
MEMBAR MASK
|
Барьер в памяти
|
Прочие команды
|
|
SETHI CON, DST
|
Установка битов с 10-го по 13-й
|
MOVcc CC, S2, DST
|
Перемещение при определенном условии
|
MOVr, R1, S2, DST
|
Перемещение в зависимости от значения
|
|
регистра
|
NOP
|
Пустая операция
|
POPC S1, DST
|
Подсчет генеральной совокупности
|
RDCCR V, DST
|
Чтение регистра кода условия
|
WRCCR, R1, S2, V
|
Запись регистра кода условия
|
RDPC V, DST
|
Чтение счетчика команд
|
Если изначальный порядок следования команд А... В ... С, где А устанавливает коды условий, а В их проверяет, то компилятор не сможет вставить команду С между А и В, если тоже С устанавливает коды условий. По этой причине многие команды имеют два варианта, а компилятор обычно использует ту команду, которая не устанавливает коды условий, если не планируется проверить их позже.
⇐ Предыдущая страница| |Следующая страница ⇒
|