目标文件中函数的绝对地址

时间:2021-08-01 15:09:19

标签: c arm cortex-m machine-code

我有 ARM Cortex-M 对象文件 (.o),其中包含以下代码:BL $testFunc。在同一个目标文件中,我还可以找到 testFunc 的实现。我能得到程序执行过程中调用的绝对地址吗?我只有目标文件

1 个答案:

答案 0 :(得分:2)

$testFunc 是未解析的链接。在确定绝对地址之前,您必须将目标文件与 C 运行时和 MCU 初始化代码以及任何其他依赖项(库分离目标模块)链接起来。

编译器不知道目标的内存环境。链接器采用单独的目标代码模块和链接器脚本(定义内存映射)并解析链接并定位代码和数据。

链接器可以输出一个 MAP 文件,该文件将包含所有外部链接器代码和数据项的绝对地址。