10.69 __attribute__((section("name"))) 変数属性

section 属性を使用すると、変数を特定のデータセクションに配置するように指定できます。

通常 ARM コンパイラでは、生成したオブジェクトを .data.bss などのセクションに配置します。しかし、追加のデータセクションが必要になったり、変数を特別なセクションに配置したりする場合(特別なハードウェアへのマップを行う場合など)があります。
section 属性を使用すると、 zero_init 属性を使用しない限り、読み出し専用変数は RO データセクションに配置され、読み出し-書き込み変数は RW データセクションに配置されます。この場合、変数は ZI セクションに配置されます。

この変数属性は、ARM コンパイラでサポートされている GNU コンパイラの拡張機能です。

/* in RO section */
const int descriptor[3] __attribute__((section ("descr"))) = { 1,2,3 };
/* in RW section */
long long rw_initialized[10] __attribute__((section ("INITIALIZED_RW"))) = {5};
/* in RW section */
long long rw[10] __attribute__((section ("RW")));
/* in ZI section */
long long altstack[10] __attribute__((section ("STACK"), zero_init));
関連情報
リンク時のシンボルの場所を調べる方法
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.