Writing ARM and Thumb Assembly Language
2-4 Copyright © 2000, 2001 ARM Limited. All rights reserved. ARM DUI 0068B
2.2.3 Processor mode
ARM processors support up to seven processor modes, depending on the architecture
version. These are:
• User
• FIQ - Fast Interrupt Request
• IRQ - Interrupt Request
• Supervisor
• Abort
• Undefined
• System (ARM architecture v4 and above).
All modes except User mode are referred to as privileged modes.
Applications that require task protection usually execute in User mode. Some
embedded applications might run entirely in Supervisor or System modes.
Modes other than User mode are entered to service exceptions, or to access privileged
resources. Refer to the Handling Processor Exceptions chapter in ADS Developer
Guide, and ARM Architecture Reference Manual for more information.
2.2.4 Registers
ARM processors have 37 registers. The registers are arranged in partially overlapping
banks. There is a different register bank for each processor mode. The banked registers
give rapid context switching for dealing with processor exceptions and privileged
operations. Refer to ARM Architecture Reference Manual for a detailed description of
how registers are banked.
The following registers are available in ARM architecture v3 and above:
• 30 general-purpose, 32-bit registers
• The program counter (pc) on page 2-5
• The Current Program Status Register (CPSR) on page 2-5
• Five Saved Program Status Registers (SPSRs) on page 2-5.
30 general-purpose, 32-bit registers
Fifteen general-purpose registers are visible at any one time, depending on the current
processor mode, as r0, r1, ... ,r13, r14.
By convention, r13 is used as a stack pointer (sp) in ARM assembly language. The C
and C++ compilers always use r13 as the stack pointer.