| |||
| Home > Writing ARM and Thumb Assembly Language > Overview of the ARM architecture > Thumb instruction capabilities | |||
The following general points apply to Thumb instructions:
The conditional branch instruction is the only Thumb instruction
that can be executed conditionally on the value of the ALU status
flags in the CPSR. All data processing instructions update these
flags, except when one or more high registers are specified as operands
to the MOV or ADD instructions. In these
cases the flags cannot be updated.
You cannot have any data processing instructions between an instruction that sets a condition and a conditional branch that depends on it. Use a conditional branch over any instruction that you wish to be conditional.
In Thumb state, most instructions can access only r0 to r7. These are referred to as the low registers.
Registers r8 to r15 are limited access registers. In Thumb state these are referred to as high registers. They can be used, for example, as fast temporary storage.
Refer to Chapter 5 Thumb Instruction Reference for a complete list of the Thumb data processing instructions that can access the high registers.