Register accessesin AArch32 state
16-bit A32 instructions can access only a limited set of registers. There are also some restrictions on the use of special-purpose registers by A32 and 32-bit T32 instructions.
Most 16-bit T32 instructions can only access R0 to R7. Onlya small number of T32 instructions can access R8-R12, SP, LR, andPC. Registers R0 to R7 are called Lo registers. Registers R8-R12,SP, LR, and PC are called Hi registers.
All 32-bit T32 instructions can access R0 to R12, and LR.However, apart from a few designated stack manipulation instructions,most T32 instructions cannot use SP. Except for a few specific instructionswhere PC is useful, most T32 instructions cannot use PC.
In A32 state, all instructions can access R0 to R12, SP, andLR, and most instructions can also access PC (R15). However, theuse of the SP in an A32 instruction, in any way that is not possiblein the corresponding T32 instruction, is deprecated. Explicit useof the PC in an A32 instruction is not usually useful, and exceptfor specific instances that are useful, such use is deprecated.Implicit use of the PC, for example in branch instructions or load(literal) instructions, is never deprecated.
MRS instructions can move thecontents of a status register to a general-purpose register, wherethey can be manipulated by normal data processing operations. Youcan use the
MSR instruction to move thecontents of a general-purpose register to a status register.