ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
标识一个符号,将其作为弱符号处理
.weak symbol name
.weak 指令用于标识在当前模块中使用但在另一模块中定义的符号。链接器在链接时解析此符号的定义。如果某弱符号需要解析某以其他方式未解析的引用,链接器不会默认在输出文件的符号表中包含该弱符号(就像全局符号那样),而只会在“最终”链接的输出中包含该弱符号。有关链接器如何处理弱符号的详细信息,请参阅节 2.6.3。
.weak 指令等同于 .ref 指令,只是引用具有弱链接。
.weak 指令始终为一个符号创建符号表条目,无论模块是否使用该符号。而 .symdepend 指令只在模块实际使用某符号时才为其创建符号表条目(请参阅 .symdepend 主题)。
如果某符号并未在当前模块中定义(当前模块包括宏文件、副本文件和包含文件),则使用 .weak 指令指示汇编器:该符号在外部模块中定义。这可防止汇编器发出未解析的引用错误。链接时,链接器会在其他模块中查找该符号的定义。
例如,如以下示例所示组合使用 .weak 和 .set 指令来定义弱绝对符号“ext_addr_sym”:
.weak ext_addr_sym
ext_addr_sym .set 0x12345678
如果汇编此汇编源代码,并在链接中包含生成的目标文件,本例中的“ext_addr_sym”可用作最终链接中的弱绝对符号。如果应用中的其他位置未引用该符号,它会成为候选的删除对象。