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