我有一个SW,它被分成两个二进制(加载在不同的记忆中)。
因此,我有两个链接文件。
一个二进制文件在另一个内存中运行并加载第二个二进制文件,这个第二个二进制程序运行。
这两种代码都使用一个函数,第一个代码在RAM中加载它,所以在第二个过程中,我调用这个函数实际上是跳转到在RAM中加载这个函数的地址(在第一个SW的链接文件中,我定义了一个特定的部分,强制加载这个函数)。
目前,这个机制对我来说是正确的。
我的问题是,是否有可能跳到标签或符号,而不是特定的地址?
理想情况下,在我的链接器文件中,我将用标记定义地址,在代码中,我将引用该标记。
也就是说,编译器和链接器都会理解该标记并将其转换到地址。
因此,如果我更改链接器中的地址,我也不必更改跳转指令。
非常感谢
注:gcc-arm-无-eabi-4_9-2015Q3
发布于 2019-09-24 14:41:20
将链接器文件分成两部分,并将两者用于链接。 (问题的答案有一个例子)
您可以使用App2中的NOLOAD (通常在App1中加载它)来,了解函数的,但不加载它,然后访问第一个链接中提到的函数。
如果您想使用预处理器宏和编译/链接选项,则可以在两个应用程序之间共享一个额外的链接器文件,但可以根据开关有条件地加载部分。这将帮助您避免在两个链接器文件中重复地址(例如,App1将使用ld1 + ldshared链接,App2使用ld1 + ldshared与不同的交换机连接)。
https://stackoverflow.com/questions/58079394
复制相似问题