Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Boroda_2

.doc
Скачиваний:
7
Добавлен:
20.03.2015
Размер:
1.67 Mб
Скачать

Таблица 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

Деление без учета знака

TADCC R1, 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

Логическое HE-ИЛИ с установкой кода условия

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 SI, DST

Подсчет генеральной совокупности

RDCCR V, DST

Чтение регистра кода условия

WRCCR, R1, S2, V

Запись регистра кода условия

RDPC V, DST

Чтение счетчика команд

Если изначальный порядок следования команд А... В ... С, где А устанавлива­ет коды условий, а В их проверяет, то компилятор не сможет вставить команду С между А и В, если тоже С устанавливает коды условий. По этой причине многие команды имеют два варианта, а компилятор обычно использует ту команду, ко­торая не устанавливает коды условий, если не планируется проверить их позже.

Поддерживаются также команды умножения, деления с учетом знака и деления без учета знака.

Кроме того, поддерживается специальный формат 30-разрядных чисел с авто­матическим опознаванием типа данных за счет поля тега. Этот формат использу­ется для таких языков, как Smalltalk и Prolog, в которых тип переменных может меняться во время выполнения программы. При наличии таких чисел компиля­тор вставляет, например, команду ADD, а во время выполнения программы маши­на определяет, какая именно команда ADD нужна в данном случае, целочисленная или с плавающей точкой.

Группа команд сдвига включает одну команду сдвига влево и две команды сдвига вправо. Каждая из них имеет два варианта: 32- и 64-разрядный. Команды сдвига в основном используются для манипулирования битами. Большинство CISC-машин имеют довольно много разнообразных команд обычного и цикли­ческого сдвига, но практически все они совершенно бесполезны.

Логические команды аналогичны арифметическим. Эта группа включает ко­манды AND (И), OR (ИЛИ), X0R (ИСКЛЮЧАЮЩЕЕ ИЛИ), ANDN (НЕ-И), 0RN (HE-ИЛИ) и XN0R (ИСКЛЮЧАЮЩЕЕ HE-ИЛИ). Полезность последних трех команд сомнительна, но они могут выполняться за один цикл и не требуют прак­тически никакого дополнительного аппаратного обеспечения, а потому часто включаются в набор команд. Даже разработчики 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, можно легко смоделировать, использовав либо регистр G0, либо операнд-кон­станту (см. вариант lb формата на рис. рис. 5.11). Некоторые из них перечисле­ны в табл. 5.11. Эти команды распознаются ассемблером UltraSPARC III и часто вставляются в код компиляторами. При моделировании многих из них исполь­зуется тот факт, что регистр G0 связан с аппаратным нулем и запись в этот ре­гистр не дает никакого эффекта.

Таблица 5.11. Некоторые моделируемые команды UltraSPARC III

Команда

Описание

MOV SRC, DST

Выполнение команды OR с операндами SRC и GO и сохранение результата в DST

CMPSRC1, SRC2

Вычитание SRC2 из SRC1 (команда SUBCC) и сохранение результата в G0

TST SRC

Выполнение команды ORCC с операндами SRC и G0 и сохранение результата в G0

NOT DST

Выполнение команды XNOR с операндами DST и G0

NEG DST

Вычитание SRC2 из SRC1 (команда SUBCC) и сохранение результата в G0

INC DST

Прибавление 1 к DST (непосредственный операнд) — команда ADD

DEC DST

Вычитание 1 из DST (непосредственный операнд) — команда SUB

CLR DST

Выполнение команды OR с операндами G0 и G0 и сохранение результата в DST

NOP

Выполнение команды SETHI с операндами G0 и 0

RET

Выполнение команды JMPL % 17 + 8, %G0

Команды 8051

Набор команд 8051 очень прост. Все они представлены в табл. 5.12. В каждой строке таблицы указан мнемонический код, краткое описание и режимы адреса­ции для источников или приемников (входных или выходных регистров), обо­значенных, соответственно, как SCR или EXT. Вполне объяснимо разнообразие команд MOV для перемещения данных между сумматором (АСС), регистрами и памятью. Также предусмотрены команды помещения элементов в стек и их вы­талкивания из стека. Указатель стека устанавливается в специальном регистре. Память в диапазоне выше адреса 256 всегда является внешней, так как объем встроенной памяти 8051 равен 128 байт, а 8052 — 256 байт. Обращение к внеш­ней памяти осуществляется только через 16-разрядный регистр DPTR. Группу команд перемещения дополняют разнообразные команды перестановки элемен­тов регистров.

В микросхеме 8051 реализованы простые арифметические команды сложе­ния, вычитания, умножения и деления, причем две последние работают со стро­го определенными регистрами. Допустимы и широко применяются команды по­ложительного и отрицательного приращения. Кроме того, предусмотрены команды логических вычислений и циклического сдвига.

Далее в табл. 5.12 указаны побитовые операции. Например:

Ком.

Описание

АСС

Per.

Неп.

@R

# С Бит

MOV

Перемещение из SCR в ACC

Да

Да

Да

Да

MOV

Перемещение из SCR в регистр

Да

Да

Да

MOV

Перемещение из SCR в память

Да

Да

Да

Да

Да

MOV

Перемещение из SCR в ОЗУ через регистр

Да

Да

Да

MOV

Перемещение 16-разрядной константы в DPTR

MOVC

Перемещение кода в АСС со смещением от DPTR

MOVC

Перемещение кода в АСС со смещением от PC

MOVX

Перемещение байта из внешнего ОЗУ в АСС

Да

MOVX

Перемещение байта из внешнего ОЗУ в АСС @DPTR

MOVX

Перемещение байта из АСС во внешнее ОЗУ

Да

MOVX

Перемещение байта и АСС @DPTR во внешнее ОЗУ

PUSH

Помещение SCR байта в стек

Да

POP

Выталкивание байта из стека в EXT

Да

XCH

Обмен данными между АСС и EXT

Да

Да

Да

XCHD

Обмен цифрой младшего разряда между АСС и EXT

Да

SWAP

Перестановка полубайтов EXT

Да

ADD

Прибавление SCR к АСС

Да

Да

Да

Да

ADDC

Прибавление SCR к АСС с переносом

Да

Да

Да

Да

SUBB

Вычитание SCR из АСС с займом

Да

Да

Да

Да

INC

Положительное приращение EXT

Да

Да

Да

Да

DEC

Отрицательное приращение EXT

Да

Да

Да

Да

INC

DPTR

MUL

Умножение

DIV

Деление

DA

Десятичная коррекция EXT

Да

ANL

SCR И АСС

Да

Да

Да

Да

ANL

АСС И EXT

Да

ANL

Непосредственный операнд И EXT

Да

ORL

SCR ИЛИ АСС

Да

Да

Да

Да

ORL

АСС ИЛИ EXT

Да

ORL

Непосредственный операнд ИЛИ EXT

Да

XRL

SCR ИСКЛЮЧАЮЩЕЕ ИЛИ АСС

Да

Да

Да

Да

XRL

АСС ИСКЛЮЧАЮЩЕЕ ИЛИ EXT

Да

XRL

Непосредственный операнд ИСКЛЮЧАЮЩЕЕ ИЛИ EXT

Да

CLR

Сброс EXT

Да

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]