ZHCU820Y September 2004 – June 2021
严格的惯例将特定寄存器与 C/C++ 环境中的特定运算相关联。如计划在 C/C++ 程序中使用汇编语言例程,则必须理解并遵循这些寄存器惯例。
寄存器惯例规定了编译器如何使用寄存器以及如何在函数调用之间保留值。表 7-3 显示了受这些惯例影响的寄存器类型。表 7-4 总结了编译器如何使用寄存器以及是否在各调用中保留寄存器的值。有关如何在各调用中保留这些值的信息,请参阅Topic Link Label7.4。
寄存器类型 | 说明 |
---|---|
参数寄存器 | 在函数调用期间传递参数 |
返回寄存器 | 保留函数调用的返回值 |
表达式寄存器 | 保留值 |
参数指针 | 用作访问函数参数(传入参数)的基值 |
栈指针 | 保留软件栈顶的地址 |
程序计数器 | 包含正在执行的代码的当前地址 |
寄存器 | 别名 | 使用 | 保留函数(1) |
---|---|---|---|
R0 | PC | 程序计数器 | 不适用 |
R1 | SP | 栈指针 | 不适用(2) |
R2 | SR | 状态寄存器 | 不适用 |
R3 | 常量发生器 | 不适用 | |
R4-R10 | 表达式寄存器 | 子级 | |
R11 | 表达式寄存器 | 父级 | |
R12 | 表达式寄存器、参数指针、返回寄存器 | 父级 | |
R13 | 表达式寄存器、参数指针、返回寄存器 | 父级 | |
R14 | 表达式寄存器、参数指针、返回寄存器 | 父级 | |
R15 | 表达式寄存器、参数指针、返回寄存器 | 父级 |