首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCC-ARM:在C中跳转到链接器部分而不是绝对地址。

问GCC-ARM:在C中跳转到链接器部分而不是绝对地址。
EN

Stack Overflow用户
提问于 2019-09-24 11:34:46
回答 1查看 325关注 0票数 0

我有一个SW,它被分成两个二进制(加载在不同的记忆中)。

因此,我有两个链接文件。

一个二进制文件在另一个内存中运行并加载第二个二进制文件,这个第二个二进制程序运行。

这两种代码都使用一个函数,第一个代码在RAM中加载它,所以在第二个过程中,我调用这个函数实际上是跳转到在RAM中加载这个函数的地址(在第一个SW的链接文件中,我定义了一个特定的部分,强制加载这个函数)。

目前,这个机制对我来说是正确的。

我的问题是,是否有可能跳到标签或符号,而不是特定的地址?

理想情况下,在我的链接器文件中,我将用标记定义地址,在代码中,我将引用该标记。

也就是说,编译器和链接器都会理解该标记并将其转换到地址。

因此,如果我更改链接器中的地址,我也不必更改跳转指令。

非常感谢

注:gcc-arm-无-eabi-4_9-2015Q3

EN

回答 1

Stack Overflow用户

发布于 2019-09-24 14:41:20

直接从C代码访问链接器部分

NOLOAD指令

将链接器文件分成两部分,并将两者用于链接。 (问题的答案有一个例子)

您可以使用App2中的NOLOAD (通常在App1中加载它)来,了解函数的,但不加载它,然后访问第一个链接中提到的函数。

如果您想使用预处理器宏和编译/链接选项,则可以在两个应用程序之间共享一个额外的链接器文件,但可以根据开关有条件地加载部分。这将帮助您避免在两个链接器文件中重复地址(例如,App1将使用ld1 + ldshared链接,App2使用ld1 + ldshared与不同的交换机连接)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58079394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档