ZHCU820Y September 2004 – June 2021
编译器生成可重定位的代码块和数据块。这些块称为段,块以各种方式分配在内存中,以符合各种系统配置。有关编译器如何使用这些段的完整说明,请参阅Topic Link Label7.1.4。
编译器创建两种基本类型的段:初始化段和未初始化段。表 5-1 总结了初始化段。表 5-2 总结了未初始化段。
| 名称 | 内容 |
|---|---|
| .binit | 引导时间复制表(有关链接器命令文件中BINIT的信息,请参阅《MSP430 汇编语言工具用户指南》) |
| .mspabi.exidx | 异常处理的索引表;只读(请参阅 --exceptions 选项)。 |
| .mspabi.extab | 异常处理的展开指令;只读(请参阅 --exceptions 选项)。 |
| .data | 显式初始化的全局和静态非常量变量。 |
| .init_array | 启动时要调用的构造函数表。 |
| .name.load | 段名称的压缩图像;只读(有关复制表的信息,请参阅《MSP430 汇编语言工具用户指南》。) |
| .ovly | 复制除引导时间 (.binit) 复制表以外的表。只读数据。 |
| .rodata | 具有 常量 说明符的全局和静态变量。 |
| .TI.crctab | 生成的 CRC 校验表。只读数据。 |
| .TI.noinit | pragma NOINIT 使未初始化变量放置在 .TI.noinit 段中。默认链接器命令文件使用.bss 放置该段。有关 NOINIT 和 PERSISTENT pragma 的详细信息,请参阅Topic Link Label6.11.22。 |
| .TI.persistent | pragma PERSISTENT 使初始化变量放置在 .TI.persistent 段中。默认链接器命令文件使用 .data 放置该段。 |
| 名称 | 内容 |
|---|---|
| .args | 链接器创建的段,用于将参数从加载器的命令行传递到程序 |
| .bss | 未初始化全局和静态变量 |
| .cio | 运行时支持库中 stdio 函数的缓冲区 |
| .stack | 函数调用帧栈 |
| .sysmem | 用于动态内存分配(malloc 等)的内存池(堆) |
链接程序时,必须指定在段分配内存中的位置。通常,初始化段链接到 ROM 或 RAM 中,而未初始化段链接到 RAM 中。
链接器提供了 MEMORY 和 SECTIONS 指令来分配段。有关将段分配到内存中的更多信息,请参阅《MSP430 汇编语言工具用户指南》。