__attribute__((at(address))) 变量属性

1、此变量属性使您能够指定变量的绝对地址。

2、语法

__attribute__((at(address)))

address:是变量的期望地址。

3、变量被放在它自己的section中,包含变量的section由编译器给出合适的类型:

    只读变量放在RO类型的区域中。

    初始化的读写变量放在RW类型的区域中。

    显式初始化为零的变量放在:

        RVCT 4.0及以后版本中ZI类型的部分。

        RVCT 3.1及更早为RW型(非ZI型)。这些变量不是编译器的ZI-to-RW优化的候选变量。

    未初始化的变量放在ZI类型的部分中。

4、GNU编译器不支持这个变量属性。

扫描二维码关注公众号,回复: 8606859 查看本文章

5、

链接器并不总是能够放置由at变量属性产生的部分。

当at属性用于具有不完整类型的声明时,编译器会错误地使用它。

6、如果无法将一个节放在指定的地址,链接器将给出错误消息。

7、例程

const int x1 __attribute__((at(0x10000))) = 10; /* RO */
int x2 __attribute__((at(0x12000))) = 10; /* RW */
int x3 __attribute__((at(0x14000))) = 0; /* RVCT 3.1 and earlier: RW.
                                          * RVCT 4.0 and later: ZI. */
int x4 __attribute__((at(0x16000))); /* ZI */
发布了124 篇原创文章 · 获赞 21 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/tyustli/article/details/102575480
今日推荐