SPRAC71B February 2019 – October 2023
Implementations must not use the special-purpose registers for any purpose other than the dedicated special purpose. The remaining registers are general-purpose registers.
SP is the call stack pointer. The stack pointer must always remain properly aligned, even during hand-coded assembly functions (see Section 4.6.1). TMS320C28x requires alignment to 16-bit words. Stack management and the local frame structure is presented in Section 4.6.
The ABI designates the following as callee-saved registers. That is, a called function is expected to preserve them so they have the same value on return from a function as they had at the point of the call.
All other registers are caller-save registers. That is, they are not preserved across a call, so if their value is needed following the call, the caller is responsible for saving and restoring their contents.
Register | Size | Description |
---|---|---|
ACC | 32 bits | Accumulator |
AH | 16 bits | High half of ACC |
AL | 16 bits | Low half of ACC |
XAR0 | 16 bits | Auxiliary register 0 |
XAR1 | 32 bits | Auxiliary register 1 |
XAR2 | 32 bits | Auxiliary register 2 |
XAR3 | 32 bits | Auxiliary register 3 |
XAR4 | 32 bits | Auxiliary register 4 |
XAR5 | 32 bits | Auxiliary register 5 |
XAR6 | 32 bits | Auxiliary register 6 |
XAR7 | 32 bits | Auxiliary register 7 |
AR0 | 16 bits | Low half of XAR0 |
AR1 | 16 bits | Low half of XAR1 |
AR2 | 16 bits | Low half of XAR2 |
AR3 | 16 bits | Low half of XAR3 |
AR4 | 16 bits | Low half of XAR4 |
AR5 | 16 bits | Low half of XAR5 |
AR6 | 16 bits | Low half of XAR6 |
AR7 | 16 bits | Low half of XAR7 |
DP | 16 bits | Data-page pointer |
IFR | 16 bits | Interrupt flag register |
IER | 16 bits | Interrupt enable register |
DBGIER | 16 bits | Debug interrupt enable register |
P | 32 bits | Product register |
PH | 16 bits | High half of P |
PL | 16 bits | Low half of P |
PC | 22 bits | Program counter |
RPC | 22 bits | Return program counte |
SP | 16 bits | Stack pointer |
ST0 | 16 bits | Status register 0 |
ST1 | 16 bits | Status register 1 |
XT | 32 bits | Multiplicand register |
T | 16 bits | High half of XT |
TL | 16 bits | Low half of XT |
In addition, some devices have an FPU instruction set, which adds registers R0-R7.
Figure 3-1 shows the C28x registers. See the TMS320C28x DSP CPU and Instruction Set Reference Guide (SPRU430) for more information about the registers.