ZHCU875Z August 2001 – October 2023 SM320F28335-EP
有条件地将段保留在目标模块输出之外
.clink["section name"]
.clink 指令通过以下方法启用条件链接:如果在某个段中没有找到对任何符号的引用,则告知链接器将该段保留在链接器的最终目标模块输出之外。.clink 指令可以应用于已初始化的段。
仅 COFF ABI 支持 .clink 指令。用在 EABI 模式下时,该指令会被忽略。
.clink 指令适用于当前已初始化的段。如果在链接的段中未找到对指定段中所定义任何符号的引用,则告知链接器将段保留在链接器的最终目标模块输出之外。
.clink 指令仅对 COFF 目标文件格式有用。按照 COFF ABI 模型,链接器假定默认情况下所有段都没有资格通过条件链接进行删除。如果您想让某个段符合删除条件,您必须对其应用 .clink 指令。相比之下,按照 ELF EABI 模型,链接器会假定所有段都有资格通过条件链接进行删除。因此,.clink 指令在 EABI 下无效。
定义了 C 程序进入点的段不能标记为有条件链接的段。
在此例中,为 Vars 和 Counts 段设置了条件链接。
1 000000 .sect "Vars"
2 ; Vars section is conditionally linked
3 .clink
4
5 000000 001A X: .long 01Ah
000001 0000
6 000002 001A Y: .word 01Ah
7 000003 001A Z: .word 01Ah
8 ; Counts section is conditionally linked
9 .clink
10
11 000004 001A XCount: .word 01Ah
12 000005 001A YCount: .word 01Ah
13 000006 001A ZCount: .word 01Ah
14 ; By default, .text in unconditionally linked
15 000000 .text
16
17 000000 97C6 MOV *XAR6, AH
18 ; These references to symbol X cause the Vars
19 ; section to be linked into the COFF output
20 000001 8500+ MOV ACC, @X
21 000002 3100 MOV P, #0
22 000003 0FAB CMPL ACC, P