Существует множество возможностей. В следующей таблице приведены только
основные из них:
Мнемоника Подразумевает
CPSR флаг
EQ
Равно
Z = 1
NE
НЕ равно
Z = 0
CS/HS
Установить Carry флаг
C = 1
CC/LO
Очистить(обнулить) Carry флаг C = 0
MI
Минус/отрицательный
N = 1
PL
Плюс/положительный
N = 0
VS
Переполнение
V = 1
VC
НЕТ переполнения
V = 0
Другие варианты представляют собой
комбинации вышеперечисленных, и
могут быть найдены на странице 112 из “ARM Architecture Reference Manual”
(http://infocenter.arm.com/help/topic/com.arm.doc.ddi0100i/index.html).
Конечно, если инструкция не имеет мнемонического расширения, она считается
некондиционной и всегда выполняется. Вместо этого,
если флаги не
удовлетворяют ее условию, инструкция
считается NOP и пропускается.
Простым примером условного выполнения может быть:
1.
CMP r0, #2
2.
MOVEQ r1, #0
3.
MOVNE r2, #4
Код прост. Сначала проверяется, равно ли значение, содержащееся в r0 двойке.
Если да, то
команда инструкция MOVEQ сбросит r1. В противном случае
команда
MOVNE поместит значение 4 в r2.
3.3 Инструкции ветвления (Branch instructions)
Инструкции ветвления необходимы для создания программ, в которых нужны
циклы и функции. С их помощью можно
переходить в различные части
исполняемого файла в соответствии с определенными условиями. Они также
позволяют создавать подпрограммы,
которые программист может
рассматривать как множество маленьких "черных ящиков", и избежать
повторения кода.
12
Вот основные инструкции (безусловные
переходы, которые можно сделать
условными с помощью мнемонических расширений):
Do'stlaringiz bilan baham: