ZHCUAU3J January 2018 – March 2024
使用以下六个运算符可以定义加载时和运行时地址和大小的符号:
LOAD_START( sym) START( sym) |
用相关分配单元的加载时起始地址定义 sym |
LOAD_END( sym) END( sym) |
用相关分配单元的加载时结束地址定义 sym |
LOAD_SIZE( sym) SIZE( sym) |
用相关分配单元的加载时大小定义 sym |
RUN_START( sym) | 用相关分配单元的运行时起始地址定义 sym |
RUN_END( sym) | 用相关分配单元的运行时结束地址定义 sym |
RUN_SIZE(sym) | 用相关分配单元的运行时大小定义 sym |
LAST(sym) | 用相关存储器范围中上次分配的字节的运行时地址定义 sym。 |
这些地址和维度运算符可与几种不同类型的分配单元(包括输入项、输出段、GROUP 和 UNION)相关联。以下几节提供了一些示例来说明如何在每种情况下使用运算符。
链接器定义的这些符号可在运行时通过 _symval 运算符予以访问,这本质上是一个强制转换操作。例如,假设链接器命令文件包含以下内容:
.text: RUN_START(text_run_start), RUN_SIZE(text_run_size) { *(.text) }
您的 C 程序可以按如下方式访问这些符号:
extern char text_run_start, text_run_size;
printf(".text load start is %lx\n", _symval(&text_run_start));
printf(".text load size is %lx\n", _symval(&text_run_size));
更多有关在 C/C++ 代码中引用链接器符号的信息,请参阅节 12.6。