我已经运行过使用的代码__attribute__((section("name")))
。据我所知,对于 gcc 编译器,这允许您告诉链接器将创建的对象放置在特定部分“名称”(在链接器文件中声明“名称”绝对地址)。
这样做而不是仅仅使用 .data 部分有什么意义?
有许多可能的用途。 [编辑添加注释:这只是我自己见过或考虑过的用途示例,而不是完整列表。]
例如,Linux 内核将某些代码和数据部分标记为仅在内核引导期间使用。这些可以在内核运行后被抛弃,回收空间以供其他用途。
您可以使用它来标记需要在特定处理器变体上修补的代码或数据值,例如,带或不带协处理器。
您可以使用它使内容存在于“特殊”地址空间中,这些地址空间将被烧录到 PROM 或保存在 EEPROM 上,而不是普通内存中。
您可以使用它来收集代码或数据区域,以实现初始化和清理等目的,就像在程序启动之前和结束时运行的 C++ 构造函数和析构函数一样,或者使用更短的寻址模式(我不知道有多少)将适用于 ARM,因为我自己没有编写任何 ARM 代码)。
实际使用取决于链接描述文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)