ZHCADC3B February 2019 – October 2023
实现不能将这些专用寄存器用于除专门特殊用途以外的任何目的。其余的寄存器为通用型寄存器。
SP 是调用栈指针。即使在手工编码的汇编函数中,栈指针也必须始终保持正确对齐(请参阅节 4.6.1)。TMS320C28x 要求与 16 位字对齐。栈管理和本地帧结构如节 4.6所述。
ABI 将以下内容指定为被调用者保存 寄存器。也就是说,需要由被调用的函数保留上述寄存器,确保其在从函数返回时具有与调用时相同的值。
所有其他寄存器都是调用者保存 寄存器。也就是说,这些寄存器不会在调用中保留,因此如果调用后需要它们的值,调用者负责保存和恢复它们的内容。
寄存器 | 大小 | 说明 |
---|---|---|
ACC | 32 位 | 累加器 |
AH | 16 位 | ACC 的高半部分 |
AL | 16 位 | ACC 的低半部分 |
XAR0 | 16 位 | 辅助寄存器 0 |
XAR1 | 32 位 | 辅助寄存器 1 |
XAR2 | 32 位 | 辅助寄存器 2 |
XAR3 | 32 位 | 辅助寄存器 3 |
XAR4 | 32 位 | 辅助寄存器 4 |
XAR5 | 32 位 | 辅助寄存器 5 |
XAR6 | 32 位 | 辅助寄存器 6 |
XAR7 | 32 位 | 辅助寄存器 7 |
AR0 | 16 位 | XAR0 的低半部分 |
AR1 | 16 位 | XAR1 的低半部分 |
AR2 | 16 位 | XAR2 的低半部分 |
AR3 | 16 位 | XAR3 的低半部分 |
AR4 | 16 位 | XAR4 的低半部分 |
AR5 | 16 位 | XAR5 的低半部分 |
AR6 | 16 位 | XAR6 的低半部分 |
AR7 | 16 位 | XAR7 的低半部分 |
DP | 16 位 | 数据页指针 |
IFR | 16 位 | 中断标志寄存器 |
IER | 16 位 | 中断启用寄存器 |
DBGIER | 16 位 | 调试中断使能寄存器 |
P | 32 位 | 乘积寄存器 |
PH | 16 位 | P 的高半部分 |
PL | 16 位 | P 的低半部分 |
PC | 22 位 | 程序计数器 |
RPC | 22 位 | 返回程序计数器 |
SP | 16 位 | 栈指针 |
ST0 | 16 位 | 状态寄存器 0 |
ST1 | 16 位 | 状态寄存器 1 |
XT | 32 位 | 被乘数寄存器 |
T | 16 位 | XT 的高半部分 |
TL | 16 位 | XT 的低半部分 |
此外,一些器件具有 FPU 指令集,其中增加了寄存器 R0-R7。
图 3-1 显示了 C28x 寄存器。有关寄存器的更多信息,请参阅 TMS320C28x DSP CPU 和指令集参考指南 (SPRU430)。