SPRAC71B February 2019 – October 2023
In general, implementations are free to use registers as they see fit. The standard register representations specified in this section apply only to values passed to or returned from functions.
Some struct objects can reside in registers. See Section 2.6 for more information.
Numeric values in registers are always right justified; that is, bit 0 of the register contains the least significant bit of the value. Signed integral values smaller than 16 bits are sign extended into the upper bits of the register. Unsigned values smaller than 16 bits are zero extended.
C28x has registers of varying sizes. Most commonly-used CPU registers are 16 or 32 bits, and the choice of register depends on the size of the data.
The ACC, P, and XT registers may hold 32-bit data.
The following register pairs may hold 64-bit data or pointers: ACC:P, XAR1:XAR0, XAR3:XAR2, AR5:XAR4, and XAR7:XAR6. In these pairs, the least-significant bits are contained in the second register of the pair.
The XAR0-XAR7 registers may hold 32-bit pointers.
The AH, AL, T, PH, PL, and AR0-AR7 registers may hold 16-bit data.
For devices that support FPU, the R0-R7 registers may hold 32-bit float values.
For more about C28x registers, see the TMS320C28x DSP CPU and Instruction Set Reference Guide (SPRU430).