ZHCU947E June 2015 – January 2023
用户命名的段是由用户 创建的段。其使用方式与默认 .text、.data 和 .bss 段相同,但具有独特名称的每个段在汇编期间都会区分开。
例如,重复使用 .text 指令可在目标文件中生成单一 .text 段。此 .text 段在存储器中是作为一个单元分配的。假设您希望链接器将一部分可执行代码(例如初始化例程)放在与其余 .text 不同的位置,如果您将此段代码汇编到用户命名的段,它会与 .text 分别汇编,您可以使用链接器将其分配到存储器中的其他位置。您也可以汇编与 .data 段分开的初始化数据,并为与 .bss 段分开的未初始化变量保留空间。
以下指令可用于创建用户命名的段:
这些指令的语法为:
symbol | .usect "section name", size in bytes[, alignment[, bank offset] ] |
.sect "section name" |
段的数量上限为 232-1 (4294967295)。
section name 参数是段的名称。对于 .usect 和 .sect 指令,段名可引用子段;请参阅GUID-77F852EA-5424-41C5-B598-89F2E74C742C.html#GUID-77F852EA-5424-41C5-B598-89F2E74C742C了解详情。
每次您用新名称调用这些指令之一,就创建了一个新的用户命名段。每次您用已有名称调用这些指令之一,汇编器会在具有该名称的段中继续汇编代码或数据(或保留空间)。不能在不同指令中使用相同名称。也就是说,您无法使用 .usect 指令创建段,更不用说通过 .sect 使用该段。