Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные сведения о ARM.pdf
Скачиваний:
113
Добавлен:
18.05.2014
Размер:
482.2 Кб
Скачать

-четыре флага состояния АЛУ, отражающие результаты выполнения арифметических и логических операций: «Negative», «Zero», «Carry», «Overflow» (обозначаются для краткости как N, Z, C, V); эти же флаги также называются флагами условий;

-поле, определяющее режим работы процессора;

-поле, определяющее используемый в данный момент набор инструкций;

-бит, определяющий используемый режим порядка следования байтов в операциях пересылки;

-флаги управления запретом прерываний;

-другие данные.

1.4Набор инструкций ARM

Все команды из набора инструкций ARM условно разбиты на несколько групп:

-команды обработки данных;

-команды переходов (ветвлений);

-команды доступа к памяти / пересылки данных (т. е. загрузки и сохранения);

-команды умножения;

-команды пересылки значения регистра состояния программы;

-команды сопроцессора;

-команды генерации исключительных ситуаций (исключений);

-псевдо-инструкции;

-и др.

2Флаги условий

Флаги условий (они же – флаги состояния АЛУ) являются механизмом, позволяющим реализовать условное выполнение инструкций в зависимости от характеристик результата, полученного при выполнении некоторой предшествующей инструкции. Некоторые команды могут обновлять эти флаги (N, Z, C, V) в регистре состояния программы (CPSR). Каждый из флагов является определённым признаком результата, полученного при выполнении инструкции. Краткое описание приведено в табл. 1.

Некоторые инструкции всегда обновляют флаги условий. Для большинства остальных необходимо к мнемонике команды добавить суффикс «s».

6

 

 

 

Таблица 1. Флаги N, Z, C, V регистра состояния программы

 

 

 

 

 

 

Флаг

Название

Назначение

 

 

 

N

Negative

Отражает значение старшего бита результата. Если флаг установлен,

 

 

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

 

 

представления чисел в формате дополнительного кода

 

 

свидетельствует об отрицательном результате. Если флаг сброшен,

 

 

то результат не отрицателен.

 

 

 

Z

Zero

Признак нулевого результата. Если в результате выполнения

 

 

инструкции получился ноль, флаг устанавливается. В противном

 

 

случае сбрасывается. Является признаком равенства операндов при

 

 

выполнении инструкций сравнения или вычитания.

 

C

Carry

Флаг переноса. Для арифметических операций и операций

 

 

сравнения флаг устанавливается, если при выполнении операции

 

 

произошёл перенос в разряд за пределы разрядной сетки. В

 

 

противном случае флаг сбрасывается. Сюда относятся операции

 

 

сравнения, сложения, а также вычитания (учитывая реализацию

 

 

вычитания как сложения с числом, представленном в формате

 

 

дополнительного кода).

 

 

 

 

 

Для не арифметических операций с использованием сдвига значение

 

 

флага устанавливается равным последнему биту, сдвинутому за

 

 

пределы разрядной сетки.

 

 

 

 

 

Практически для всех других операций флаг переноса не

 

 

изменяется.

 

 

 

V

Overflow

Флаг

переполнения.

Устанавливается,

если

результат

 

 

арифметической операции не уместился в диапазон допустимых

 

 

значений. При этом исходные операнды и результат

 

 

рассматриваются как знаковые числа, представленные в формате

 

 

дополнительного кода.

 

 

 

3Предикаты выполнения команды

Флаги состояний позволяют осуществить условное выполнение программы («ветвление») за счёт того, что практически для любой команды можно указать, что она должна выполняться только при выполнении определённого условия (предиката) и игнорироваться в случае невыполнения этого условия. Предикат команды формируется из набора состояний определённых флагов. Т. е. команда выполняется, если флаги, определяемые предикатом находятся в определённом состоянии.

Для того, чтобы в тексте программы указать необходимое условие, к мнемонике команды нужно добавить соответствующий двухбуквенный суффикс условия, приведённый в таблице 2. Среди всех суффиксов условий суффикс AL соответствует безусловному выполнению команды, и его можно не указывать.

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

7

 

 

Таблица 2. Суффиксы условий

 

 

 

 

Суффикс

Расшифровка

Значение

Значения флагов,

условия

 

 

при которых

 

 

 

условие верно

EQ

Equal

Равно

Z=1

 

 

 

 

NE

Not equal

Не равно

Z=0

 

 

 

 

CS/HS

Carry set/unsigned

Флаг переноса установлен / Больше

C=1

 

higher or same

или равно в беззнаковом

 

 

 

представлении

 

CC/LO

Carry clear/unsigned

Флаг переноса не установлен /

C=0

 

lower

Меньше в беззнаковом представлении

 

MI

Minus/negative

Отрицательный результат

N=1

PL

Plus/positive or zero

Положительный или нулевой

N=0

 

 

результат

 

VS

Overflow set

Произошло переполнение

V=1

VC

Overflow clear

Не произошло переполнение

V=0

 

 

 

 

HI

Unsigned higher

Больше в беззнаковом представлении

C=1 И Z=0

 

 

 

 

LS

Unsigned lower or

Меньше или равно в беззнаковом

C=0 И Z=1

 

same

представлении

 

GE

Signed greater or

Больше или равно в знаковом

N = V

 

equal

представлении

 

LT

Signed less than

Меньше в знаковом представлении

N ≠ V

 

 

 

 

GT

Signed greater than

Больше в знаковом представлении

Z = 0 И N = V

 

 

 

 

LE

Signed less or equal

Меньше или равно в знаковом

Z = 1 ИЛИ N ≠ V

 

 

представлении

 

AL

Always

Безусловное выполнение

Не имеют значения

 

 

 

 

Предикативные суффиксы, предназначенные для выполнения проверок на неравенства приведены также в таблице 3.

Таблица 3. Предикативные суффиксы, реализующие операции проверки на неравенство

Операция \ представление

Знаковое

Беззнаковое

операндов

 

 

>

GT

HI

GE

CS/HS

<

LT

CC/LO

LE

LS

8