我已经运行了使用_ attribute _((section("name"))的代码.我明白,对于gcc编译器,这允许你告诉链接器将创建的对象放在特定的"name"部分(带有"name")在链接器文件中声明的绝对地址).
这样做有什么意义,而不仅仅是使用.data部分?
有许多可能的用途.[编辑添加注释:这只是我自己看过或考虑过的一些用途示例,而非完整列表.]
例如,Linux内核标记了一些仅在内核引导期间使用的代码和数据部分.这些可以在内核运行后被抛弃,回收用于其他用途的空间.
您可以使用它来标记需要在特定处理器变体上进行修补的代码或数据值,例如,使用或不使用协处理器.
您可以使用它在"特殊"地址空间中生存,这些地址空间将被刻录到PROM或保存在EEPROM中,而不是普通存储器中.
您可以使用它来收集代码或数据区域,用于初始化和清理等目的,如在程序启动之前和结束时运行的C++构造函数和析构函数,或者使用较短的寻址模式(我不知道多少将适用于ARM,因为我自己没有编写任何ARM代码).
实际使用取决于链接描述文件.