Скачиваний:
66
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

Обработка данных

Эта команда будет выполнена, если условие истинно. Все различные условия перечислены в табл. 1. Формат команды группы ARM приведен на рис. 1.

Рис. 1. Команда обработки данных группы ARM

Команда формирует результат, выполняя указанную арифметическую или логическую операцию с одним или двумя операндами.

Первый операнд - всегда регистр (Rn). Второй операнд <shifter_operand> может быть регистром со сдвигом (Rm), или 8-битной константой с циклическим сдвигом (Imm) (в зависимости от значения бита "I" в команде). Флаги CPSR могут оставаться без изменений (S = 0) или выставлены в зависимости от результата выполнения этой команды (S = 1). Некоторые операции в команде (ТЕСТ, TEQ, CMP, CMN) не записывают результат в регистр Rd. Они используются только для того, чтобы в зависимости от результата установить/сбросить флаги CPSR (только при S = 1).

Рис. 2. Команда обработки данных группы THUMB

Далее будут использоваться следующие обозначения:

В угловых скобках «< >» обозначаются объекты. Например, адреса регистров. В круглых скобках «( )» обозначаются значения этих объектов. Например, при описании синтаксиса в ассемблере мы используем объекты:

ADD{<cond>}{S} <Rd>, <Rn>, <shifter_operand>

А при описании работы команды мы используем значения, записанные по указанному исполнительному адресу объектов:

(Rd) = (Rn) + (shifter_operand)

То есть, <Rn> – адрес регистра (от 0 до 15), (Rn) – 32-х разрядное содержимое этого регистра.

Региcтры cpsr/sprs

Описание

Регистр статуса текущего состояния (Current Program Status Register, CPSR) (рис. 3), содержит флаги условий, биты прерываний, текущий режим процессора и другую информацию, описывающую статус процессора. Каждый режим прерывания так же имеет регистр сохраненного статуса состояния процессора (Saved Program Status Register, SPRS), он используется для сохранения значения CPSR когда возникает прерывание. Значения параметров регистров CPSR/SPRS приведены в таблице 4

Подробное описание регистрового блока приведено в [4].

Рис. 3. Структура регистров CPSR/SPRS

Таблица 4. Регистр CPSR/SPRS

Флаг

№ бита

Название

Описание

N

[31]

Negative

Флаг результата выполнения команды. Если N = 1, то результат отрицательный.

Z

[30]

Zero

Флаг результата выполнения команды. Если Z = 1, то результат равен 0.

C

[29]

Carry

– для операции сложения, включающую команду сравнения CMN, флаг C устанавливается в 1 если сложение создает перенос (беззнаковое переполнение) и в значение 0, если переноса нет.

– для операции умножения, включающей команду сравнения CMN, C устанавливается в 0 если умножения создает перенос(беззнаковое переполнение) и в значение 1, если переноса нет.

– для операций сдвига, в С устанавливается значение бита который был вытеснен в рузультате сдивга

– для других операций С остаеться без именений.

V

[28]

oVerflow

– для операций сложения или вычитания если V = 1, то это означает наличие переполнения.

– для остальных операций флаг V обычно не меняют.

Q

[27]

Q

Показывает было ли получено переполнение или насыщение в результате выполнения DSP операций

I

[7]

IRQ

Когда установлен, запрещает IRQ прерывание.

F

[6]

FIQ

Когда установлен, запрещает FRQ прерывание.

T

[5]

Thumb

Переключение между ARM и THUMB режимами. Если T=1, то выбран режим THUMB.

M

[4:0]

Mode

Биты определяющие режим работы процессора.