ZHCUAQ1F july 2015 – april 2023
C/C++ 编译器使用堆栈来:
运行时堆栈从高位地址增长到低位地址。编译器使用 B15 寄存器来管理此堆栈。B15 是栈指针 (SP),指向堆栈上下一个未使用的位置。
链接器设置堆栈大小,创建全局符号 __TI_STACK_SIZE,并为其分配一个等于堆栈大小的值(以字节为单位)。默认的堆栈大小为 1K 字节。可以在链接时使用链接器命令中的 --stack_size 选项来更改堆栈大小。更多有关 --stack_size 选项的信息,请参阅《TMS320C6000 汇编语言工具用户指南》中的链接器描述章节。
在系统初始化时,SP 被设置为 .stack 段末尾(最高数字地址)之前的第一个 8 字节(64 位)对齐地址。由于堆栈的位置取决于 .stack 部分的分配位置,因此堆栈的实际地址是在链接时确定的。
C/C++ 环境在函数输入时自动递减 SP,以保留执行该函数所需的所有空间。堆栈指针在函数出口处递增,以将堆栈恢复到函数输入之前的状态。如果将汇编语言例程连接到 C/C++ 程序,请确保将堆栈指针恢复到函数输入之前的相同状态。
更多有关堆栈和堆栈指针的信息,请参阅节 8.4。