ZHCU947E June 2015 – January 2023
链接器中赋值语句的语法与 C 语言中赋值语句的语法类似:
symbol | = | expression; | 为符号分配表达式的值 |
symbol | + = | expression; | 将表达式的值加到符号 |
symbol | - = | expression; | 从符号减去表达式的值 |
symbol | * = | expression; | 将符号和表达式相乘 |
symbol | / = | expression; | 符号除以表达式 |
符号应是在外部定义的。如果不是,链接器会定义一个新符号,并将其加入符号表。表达式必须遵循GUID-4176B8B7-423C-48BE-96DE-3C9B268E6A3C.html#GUID-4176B8B7-423C-48BE-96DE-3C9B268E6A3C中定义的规则。赋值语句必须以分号结束。
链接器在分配所有输出段后处理赋值语句。因此,如果表达式包含一个符号,该符号使用的地址会反映可执行输出文件中该符号的地址。
例如,假设程序从由两个外部符号标识的两个表(表1 和表2)中的一个读取数据。程序使用 cur_tab 符号作为当前表的地址。cur_tab 符号必须指向表1或表2。用户可以在汇编代码中实现此目标,但需要重新汇编程序以更改表。相反,用户可以使用链接器赋值语句在链接时分配 cur_tab:
prog.c.obj /* 输入文件 */
cur_tab = Table1; /* 将 cur_tab 分配至其中一个表 */