ZHCADC4A September 2011 – March 2014
具有初始非零值的静态变量应分配到初始化数据段中。该段的内容应为对应于该段中所有变量初始值的存储器内容的映像。因此,当该段加载到存储器中时,变量会直接获取自己的初始值。这就是大多数基于 ELF 的工具链使用的所谓直接初始化模型。
可将预期将初始化为零的变量分配至未初始化段。加载器负责归零数据区段末尾的未初始化空间。
虽然编译器需要直接对初始化变量进行编码,但链接器不需要。链接器可将目标文件中直接编码的初始化段转换为可执行文件的编码格式,依靠库函数来解码信息并在程序启动时执行初始化。(由前文可知,链接器可能假设该库来自同一工具链。)编码初始化数据有助于节省可执行文件中的空间,还为不依赖加载器的基于 ROM 的自引导系统提供了初始化机制。TI 工具链实现了此类机制,如 Chapter18 中所述。其他工具链可采用兼容机制、不同机制,或者不采用任何机制。