ZHCU947E June 2015 – January 2023
SECTIONS 指令在命令文件中通过 SECTIONS(大写)一词后跟用大括号括起来的输出段规范列表来指定。
SECTIONS 指令的一般语法如下:
SECTIONS | |
{ | |
name : [property [, property] [, property] ...] | |
name : [property [, property] [, property] ...] | |
name : [property [, property] [, property] ...] | |
} |
每个段规范均以 name 开头,用于定义一个输出段。(输出段是输出文件中的一个段。)段名可以涉及段、子段或归档库成员。(有关多级子段的信息,请参阅GUID-B52B40F8-269B-4336-B091-606DED0B78C5.html#GUID-B52B40F8-269B-4336-B091-606DED0B78C5。)段名之后是一个属性列表,用于定义段的内容和段的分配方式。各个属性之间可以用可选逗号分隔。一个段的可能属性如下:
|
|||
语法: | load = allocation | 或 | |
> allocation | |||
|
|||
语法: | run = allocation | 或 | |
run > allocation | |||
|
|||
语法: | { input_sections } | ||
|
|||
语法: | type = COPY | 或 | |
type = DSECT | 或 | ||
type = NOLOAD | |||
|
|||
语法: | fill = value |
#STDZ0753373显示了示例链接器命令文件中的 SECTIONS 指令。
/**************************************************/
/* 带有 SECTIONS 指令的示例命令文件 */
/**************************************************/
file1.c.obj file2.c.obj /* 输入文件 */
--output_file=prog.out /* 选项 */
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
}
#STDZ0752767显示了#STDZ0753373中由 SECTIONS 指令定义的输出段(.vectors、.text、.const、.bss、.data:alpha 和 .data:beta)并显示了如何使用GUID-B65E09DA-4E20-4B45-9353-DF20B9418324.html#STDZ0753859中提供的 MEMORY 指令在存储器中分配这些段。