ZHCU876Z July 2001 – October 2023 SM320F28335-EP
未初始化的全局数据放在 .bss_cla 段中。
初始化的常量数据放在 .const_cla 段中。
由于不支持 malloc(),因此 CLA 没有 C 系统堆。
局部变量和编译器临时变量放入暂存区存储器区域中,此区域充当 CLA C 软件栈。暂存区存储器区域应在应用程序的链接器命令文件中定义和管理。
每个函数都有一个生成的函数帧(它是 .scratchpad 段的一部分),而不使用堆栈。因此,需要放在链接器命令文件中的唯一的段是 .scratchpad 段。为每个函数指定一个暂存区帧,用于保存本地数据、函数参数和临时存储。链接器确定在放置时可以覆盖哪些函数帧以节省存储器。
CLA 函数帧位于 .scratchpad 段中,以“.scratchpad:functionSectionName”的形式命名。每个函数都有自己的子段,因而具有唯一的段名称。例如,如果源级函数名为“Cla1Task1”,那么 COFF 函数名将为“_Cla1Task1”,函数段名称将为“Cla1Prog:_Cla1Task1”,函数的暂存区帧将命名为“.scratchpad:Cla1Prog:_Cla1Task1”。函数的暂存区帧将使用基本符号“__cla_Cla1Task1_sp”。
CLA2 后台任务放在 .scratchpad 段中,并以“.scratchpad:background:functionSectionName”的形式命名。后台任务框架不能与任何其他函数框架重叠,因为后台任务很可能在遇到中断后返回。
请注意,如果汇编编写器对函数的数据空间使用不同的命名约定,则不能覆盖它,也不能将它放在 .scratchpad 段中。
不需要指定 .scratchpad 段的大小。
使用 6.4 之前的编译器版本编译的 CLA 目标文件与新生成的目标文件兼容,但前提是链接器命令文件同时支持这两种暂存区命名约定。但是,用于旧目标文件的暂存区段不能与新的 .scratchpad 段重叠,必须确保这两个段都有足够大小的存储器。