ZHCUAQ1F july 2015 – april 2023
函数通过寄存器 A15 (FP) 或寄存器 B15 (SP) 间接访问其栈参数和本地非寄存器变量,其中一个寄存器指向栈顶。栈向较小的地址增长,因此通过 FP 或 SP 正偏移来访问函数的本地数据和参数数据。局部变量、临时存储器,以及为该函数调用的函数的栈参数所保留的区域,都是使用偏移量来访问的,该偏移量小于 FP 或 SP 在函数开头减去的常量。
访问传递到此函数的栈参数所需的偏移量大于或等于寄存器 FP 或 SP 在函数开头减去的常量。如果使用了优化或使用“寄存器”关键字定义了寄存器参数,编译器会尝试将寄存器参数保留在原始寄存器中。否则,会将参数复制到栈中,以释放这些寄存器供进一步分配。
有关是使用 FP 还是 SP 访问局部变量、临时存储器和栈参数的信息,请参阅节 8.4.2。更多有关 C/C++ 系统栈的信息,请参阅节 8.1.2。