ZHCUAU3J January 2018 – March 2024
C/C++ 编译器使用堆栈来:
运行时堆栈从高位地址增长到低位地址。编译器使用 D15 寄存器来管理此堆栈。D15 是指向堆栈下一个未使用位置的堆栈指针 (SP)。
链接器设置堆栈大小,创建全局符号 __TI_STACK_SIZE,并为其分配一个等于堆栈大小的值(以字节为单位)。默认的堆栈大小为 0x2000 字节。可以在链接时使用链接器命令中的 --stack_size 选项来更改堆栈大小。更多有关 --stack_size 选项的信息,请参阅节 12.4。
在系统初始化时,SP 被设置为.stack 段末尾(最高数字地址)之前的第一个 8 字节(64 位)对齐地址,即 16 个字节。SP 是8 字节对齐的,因此大多数 64 位和更小的对象不会跨越大小为 64 位的内存库边界,并且按照惯例,SP 将始终指向一个空闲的 16 字节位置以便优化函数调用中的堆栈使用。
当所需的空间大于为每个栈帧保留的 16 个字节时,C/C++ 环境在函数入口自动递减 SP,以保留执行该函数所需的所有空间。
更多有关堆栈和堆栈指针的信息,请参阅节 6.4。