ZHCU876Z July 2001 – October 2023 SM320F28335-EP
C/C++ 编译器使用堆栈来:
运行时堆栈从低位地址向上增长到高位地址。默认情况下,堆栈分配在 .stack 段中。(请参阅 run-time-support boot.asm 文件。)编译器使用硬件堆栈指针 (SP) 来管理此栈。
对于大小超过 63 个字(SP 偏移寻址模式的最大范围)的帧,编译器使用 XAR2 作为栈帧指针 (FP)。每次函数调用都会在堆栈顶部创建一个新的帧,从中分配局部和临时变量。FP 指向此帧的开头,以访问不能使用 SP 直接引用的内存位置。
堆栈大小由链接器设置。链接器创建全局符号 __STACK_SIZE(对于 COFF)或 __TI_STACK_SIZE(对于 EABI),并为其分配一个等于堆栈大小的值(以字节为单位)。默认的堆栈大小为 1K 字。可以在链接时使用 --stack_size 链接器选项来更改堆栈大小。