セクション属性の「aw」フラグは何を意味しますか? 質問する

セクション属性の「aw」フラグは何を意味しますか? 質問する

次のコード行(グローバル変数を宣言する)では、

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タイプは次のようになります:

  • ノビット: セクションにはデータが含まれていません (つまり、セクションはスペースのみを占有します)

上記はすべて、機能変数だけではありません。

おすすめ記事