ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
严格的惯例将特定寄存器与 C/C++ 环境中的特定运算相关联。如计划在 C/C++ 程序中使用汇编语言例程,则必须理解并遵循这些寄存器惯例。
寄存器惯例规定了编译器如何使用寄存器以及如何在函数调用之间保留值。下表显示了受这些惯例影响的寄存器类型。“寄存器使用”表总结了编译器如何使用寄存器以及是否在各调用中保留寄存器的值。有关如何在各调用中保留这些值的信息,请参阅节 6.4。
寄存器类型 | 说明 |
---|---|
参数寄存器 | 在函数调用期间传递参数 |
返回寄存器 | 保留函数调用的返回值 |
表达式寄存器 | 保留值 |
参数指针 | 用作访问函数参数(传入参数)的基值 |
栈指针 | 保留软件栈顶的地址 |
链接寄存器 | 包含函数调用的返回地址 |
程序计数器 | 包含正在执行的代码的当前地址 |
寄存器 | 别名 | 使用 | 由函数保留1 |
---|---|---|---|
R0 | A1 | 参数寄存器、返回寄存器、表达式寄存器 | 父级 |
R1 | A2 | 参数寄存器、返回寄存器、表达式寄存器 | 父级 |
R2 | A3 | 参数寄存器、表达式寄存器 | 父级 |
R3 | A4 | 参数寄存器、表达式寄存器 | 父级 |
R4 | V1 | 表达式寄存器 | 子级 |
R5 | V2 | 表达式寄存器 | 子级 |
R6 | V3 | 表达式寄存器 | 子级 |
R7 | V4,AP | 表达式寄存器、参数指针 | 子级 |
R8 | V5 | 表达式寄存器 | 子级 |
R9 | V6 | 表达式寄存器 | 子级 |
R10 | V7 | 表达式寄存器 | 子级 |
R11 | V8 | 表达式寄存器 | 子级 |
R12 | V9、1P | 表达式寄存器、指令指针 | 父级 |
R13 | SP | 栈指针 | 子函数2 |
R14 | LR | 链接寄存器、表达式寄存器 | 子级 |
R15 | PC | 程序计数器 | 不适用 |
CPSR | 当前程序状态寄存器 | 子级 | |
SPSR | 已保存的程序状态寄存器 | 子级 |
32 位寄存器 | 64 位寄存器 | 使用 | 由函数保留1 |
---|---|---|---|
FPSCR | 状态寄存器 | 不适用 | |
S0 | D0 | 浮点表达式、返回值、传递参数 | 不适用 |
S1 | |||
S2 | D1 | 浮点表达式、返回值、传递参数 | 不适用 |
S3 | |||
S4 | D2 | 浮点表达式、返回值、传递参数 | 不适用 |
S5 | |||
S6 | D3 | 浮点表达式、返回值、传递参数 | 不适用 |
S7 | |||
S8 | D4 | 浮点表达式、传递参数 | 不适用 |
S9 | |||
S10 | D5 | 浮点表达式、传递参数 | 不适用 |
S11 | |||
S12 | D6 | 浮点表达式、传递参数 | 不适用 |
S13 | |||
S14 | D7 | 浮点表达式、传递参数 | 不适用 |
S15 | |||
S16 | D8 | 浮点表达式 | 子级 |
S17 | |||
S18 | D9 | 浮点表达式 | 子级 |
S19 | |||
S20 | D10 | 浮点表达式 | 子级 |
S21 | |||
S22 | D11 | 浮点表达式 | 子级 |
S23 | |||
S24 | D12 | 浮点表达式 | 子级 |
S25 | |||
S26 | D13 | 浮点表达式 | 子级 |
S27 | |||
S28 | D14 | 浮点表达式 | 子级 |
S29 | |||
S30 | D15 | 浮点表达式 | 子级 |
S31 | |||
D16-D31 | 浮点表达式 |
64 位寄存器 | 四倍寄存器 | 使用 | 由函数保留1 |
---|---|---|---|
D0 | Q0 | SIMD 寄存器 | 不适用 |
D1 | |||
D2 | Q1 | SIMD 寄存器 | 不适用 |
D3 | |||
D4 | Q2 | SIMD 寄存器 | 不适用 |
D5 | |||
D6 | Q3 | SIMD 寄存器 | 不适用 |
D7 | |||
D8 | Q4 | SIMD 寄存器 | 子级 |
D9 | |||
D10 | Q5 | SIMD 寄存器 | 子级 |
D11 | |||
D12 | Q6 | SIMD 寄存器 | 子级 |
D13 | |||
D14 | Q7: | SIMD 寄存器 | 子级 |
D15 | |||
D16 | Q8 | SIMD 寄存器 | 不适用 |
D17 | |||
D18 | Q9 | SIMD 寄存器 | 不适用 |
D19 | |||
D20 | Q10 | SIMD 寄存器 | 不适用 |
D21 | |||
D22 | Q11 | SIMD 寄存器 | 不适用 |
D23 | |||
D24 | Q12 | SIMD 寄存器 | 不适用 |
D25 | |||
D26 | Q13 | SIMD 寄存器 | 不适用 |
D27 | |||
D28 | Q14 | SIMD 寄存器 | 不适用 |
D29 | |||
D30 | Q15 | SIMD 寄存器 | 不适用 |
D31 | |||
FPSCR | 状态寄存器 | 不适用 |