ZHCADC5A June 2013 – June 2020
所有架构都具有 16 个 CPU 寄存器。它们命名为 R0 到 R15。其中一些寄存器是专用寄存器。MSP430 具有 16 位寄存器。MSP430X 具有 20 位 CPU 寄存器,SR (R2) 除外,它是 16 位。有关寄存器的详细信息,请参阅 MSP430x2xx 系列用户指南 (SLAU144)。
R0 是程序计数器 (PC)。程序计数器必须始终在一个字(2 字节)边界上保持对齐。
R1 是调用栈指针 (SP)。即使在手工编码的汇编函数中,栈指针也必须始终保持正确对齐(请参阅节 4.5.1)。MSP430 和 MSP430X 都需要对齐到 2 个字节。栈管理和本地帧结构如节 4.5所述。
R2 是状态寄存器 (SR)。在一些寻址模式中,如果寄存器是 SR,实际上会解释为常量。SR 表示的常量取决于寻址模式。有关详细信息,请参阅 MSP430x2xx 系列用户指南 中的“常量发生器寄存器”一节。
R3 是 的常量生成器寄存器。当使用此寄存器时,它解释为常量。R3 表示的常量取决于寻址模式。
实现不能将这些专用寄存器用于除专门特殊用途以外的任何目的。其余的寄存器为通用型寄存器。
对于 MSP430 和 MSP430X,ABI 将 R4-R10 指定为被调用者保存 寄存器。也就是说,需要由被调用的函数保留上述寄存器,确保其在从函数返回时具有与调用时相同的值。
所有其他寄存器都是调用者保存 寄存器。也就是说,这些寄存器不会在调用中保留,因此如果调用后需要它们的值,调用者负责保存和恢复它们的内容。
寄存器 | 别名 | 由被调用者保留 | 在调用惯例中的作用 |
---|---|---|---|
R0 | PC | 不适用 | 程序计数器 |
R1 | SP | 是 | 调用栈指针 |
R2 | SR | 不适用 | 状态寄存器 |
R3 | CG | 不适用 | 常量发生器寄存器 |
R4 | 是 | ||
R5 | 是 | ||
R6 | 是 | ||
R7 | 是 | ||
R8 | 是 | 函数实参(特殊情况) | |
R9 | 是 | 函数实参(特殊情况) | |
R10 | 是 | 函数实参(特殊情况) | |
R11 | 否 | 函数实参(特殊情况) | |
R12 | 否 | 函数实参,返回值 | |
R13 | 否 | 函数实参,返回值 | |
R14 | 否 | 函数实参,返回值 | |
R15 | 否 | 函数实参,返回值 |