次のコード行(グローバル変数を宣言する)では、
unsigned int __attribute__((section(".myVarSection,\"aw\",@nobits#"))) myVar;
「aw」フラグは何を意味しますか?
私の理解では、nobits フラグは変数がゼロに初期化されるのを防ぐのですが、「aw」フラグに関する情報を見つけるのに苦労しています。
また、nobits フラグの周りの @ と # にはどのような意味がありますか?
ベストアンサー1
のsection("section-name")
属性は、次のアセンブラ行を生成して、変数を特定のセクションに配置します。
.section section-name,"aw",@progbits
設定すると、section-name
ある種".myVarSection,\"aw\",@nobits#"
の「コードインジェクションGCC で " を実行すると次のようになります:
.section .myVarSection,"aw",@nobits#,"aw",@progbits
#
記号は 1 行のコメントを開始することに注意してください。
見るGNU アセンブラマニュアルディレクティブの完全な説明については.section
、一般的な構文は
.section name [, "flags"[, @type[,flag_specific_arguments]]]
フラグも同様"aw"
です:
- 1つの: セクションは割り当て可能です
- わ: セクションは書き込み可能です
そして@nobits
タイプは次のようになります:
- ノビット: セクションにはデータが含まれていません (つまり、セクションはスペースのみを占有します)
上記はすべて、機能変数だけではありません。