ZHCU875Z August 2001 – October 2023 SM320F28335-EP
SECTIONS 指令在命令文件中通过 SECTIONS(大写)一词后跟用大括号括起来的输出段规范列表来指定。
SECTIONS 指令的一般语法如下:
SECTIONS | |
{ | |
name : [property [, property] [, property] ...] | |
name : [property [, property] [, property] ...] | |
name : [property [, property] [, property] ...] | |
} |
每个段规范均以 name 开头,用于定义一个输出段。(输出段是输出文件中的一个段。)段名可以涉及段、子段或归档库成员。(有关多级子段的信息,请参阅节 8.5.5.4。)段名之后是一个属性列表,用于定义段的内容和段的分配方式。各个属性之间可以用可选逗号分隔。一个段的可能属性如下:
语法: | load = allocation | 或 | |
> allocation | |||
|
|||
语法: | run = allocation | 或 | |
run > allocation | |||
|
|||
语法: | { input_sections } | ||
|
|||
语法: | type = COPY | 或 | |
type = DSECT | 或 | ||
type = NOLOAD | |||
|
|||
语法: | fill = value |
以下示例显示了示例链接器命令文件中的 SECTIONS 指令。(此示例使用 COFF 段名。)
/**************************************************/
/* Sample command file with SECTIONS directive */
/**************************************************/
file1.c.obj file2.c.obj /* Input files */
--output_file=prog.out /* Options */
SECTIONS
{
.text: load = PROG, PAGE = 0,
run = 0x0200, PAGE = 1
.econst: load = RAM1
.ebss: load = RAM1
.scratch: load = 0x0060, PAGE = 1
{
t1.c.obj(.scratch1)
t2.c.obj(.scratch2)
endscratch = .;
}
.data:alpha: align = 16
.data:beta: align = 16
}