6.3.1. TPCS register names and usage

The Thumb register subset has:

In addition, the Thumb subset can access the other ARM registers (r8-r12, called the high registers) singly using a set of special instructions. Refer to the ARM Architectural Reference Manual for details.

In the context of the TPCS, each Thumb register has a special name and function as shown in Table 6.3.

Table 6.3. TPCS registers

RegisterTPCS nameTPCS role
r0a1argument 1/scratch register/result
r1a2argument 2/scratch register/result
r2a3argument 3/scratch register/result
r3a4argument 4/scratch register/result
r4v1register variable
r5v2register variable
r6v3register variable
r7v4/wrregister variable/work register in function entry/exit
r8(v5)(ARM v5 register, no defined role in Thumb)
r9(v6)(ARM v6 register, no defined role in Thumb)
r10sl (v7)stack limit
r11fp (v8)frame pointer (not usually used in Thumb state)
r12(ip)(ARM ip register, no defined role in Thumb. May be used as a temporary register on Thumb function entry/exit.)
r13spstack pointer (full descending stack)
r14lrlink register
r15pcprogram counter
Copyright © 1997, 1998 ARM Limited. All rights reserved.ARM DUI 0040D