ZHCUAU3J January 2018 – March 2024
SECTIONS 指令在命令文件中通过 SECTIONS(大写)一词后跟用大括号括起来的输出段规范列表来指定。
SECTIONS 指令的一般语法如下:
SECTIONS | |
{ | |
name : [property [, property] [, property] ...] | |
name : [property [, property] [, property] ...] | |
name : [property [, property] [, property] ...] | |
} |
每个段规范均以 name 开头,用于定义一个输出段。(输出段是输出文件中的一个段。)段名可以涉及段、子段或归档库成员。(有关多级子段的信息,请参阅节 12.5.5.4。)段名之后是一个属性列表,用于定义段的内容和段的分配方式。各个属性之间可以用可选逗号分隔。一个段的可能属性如下:
语法: | load = allocation | 或 | |
> allocation | |||
|
|||
语法: | run = allocation | 或 | |
run > allocation | |||
|
|||
语法: | { input_sections } | ||
|
|||
语法: | type = COPY | 或 | |
type = DSECT | 或 | ||
|
|||
语法: | fill = value |
以下示例显示了示例链接器命令文件中的 SECTIONS 指令。
/**************************************************/
/* Sample command file with SECTIONS directive */
/**************************************************/
file1.c.obj file2.c.obj /* Input files */
--output_file=prog.out /* Options */
SECTIONS
{
.text: load = EXT_MEM, run = 0x00000800
.const: load = FAST_MEM
.bss: load = SLOW_MEM
.vectors: load = 0x00000000
{
t1.c.obj(.intvec1)
t2.c.obj(.intvec2)
endvec = .;
}
.data:alpha: align = 16
.data:beta: align = 16
}
图 12-2显示了上面的示例中由 SECTIONS 指令定义的输出段(.vectors、.text、.const、.bss、.data:alpha 和 .data:beta),并显示了如何使用节 12.5.4.2中提供的 MEMORY 指令在存储器中分配这些段。