[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

17.16.3 非初期化変数の出力

この節で説明するマクロはそれぞれ、一個の非初期化変数を出力する 作業を全部行なう。

ASM_OUTPUT_COMMON (stream, name, size, rounded)

C の文(セミコロンなし)であり、標準入出力ストリーム streamname という名前でサイズが size バイトのコモンラベルの アセンブラ定義を出力する。 変数 rounded は、呼びだし側が要求するアライメントまで切り上げた 大きさである。

名前自身を出力するには、assemble_name (stream, name) という式を使う。その前後で、その名前を定義するために追加で必要な アセンブラ構文を出力し、最後に改行を出力する。

このマクロは、非初期化コモングローバル変数のアセンブラ定義がどのように 出力されるかを制御する。

ASM_OUTPUT_ALIGNED_COMMON (stream, name, size, alignment)

ASM_OUTPUT_COMMON とほぼ同じだが、違いは必要となる アラインメントを、独立した明示的な引数として取ることである。 このマクロを定義すると、ASM_OUTPUT_COMMON の代わりに使われ、 変数に要求されるアラインメントをより柔軟に扱えるようになる。 アラインメントはビット数で指定する。

ASM_OUTPUT_ALIGNED_DECL_COMMON (stream, decl, name, size, alignment)

ASM_OUTPUT_ALIGNED_COMMON とほぼ同じだが、違いは、 出力すべき変数がひとつあれば、その宣言 decl を指定する点にある。 対応する変数がなければ decl には NULL_TREE を指定する。 このマクロを定義すると、GNU CC は ASM_OUTPUT_COMMONASM_OUTPUT_ALIGNED_COMMON の両方の代わりに使う。 何を出力するかを選択するために変数の宣言が見える必要があるときは このマクロを定義すること。

ASM_OUTPUT_SHARED_COMMON (stream, name, size, rounded)

定義されていれば、ASM_OUTPUT_COMMON とほぼ同じだが、 違いは name が共有されるときに使われる点にある。 定義されていないと、ASM_OUTPUT_COMMON が使われる。

ASM_OUTPUT_BSS (stream, decl, name, size, rounded)

一個のC の文(セミコロンなし)。標準入出力 ストリーム stream に、name という名前で、サイズが size バイトの非初期化グローバル decl のアセンブラ定義を出力する。 変数 rounded は、呼び出し側が要求するアラインメントがなんであれ、 そのアラインメントに切り上げられたサイズである。

このマクロを定義するときは ‘varasm.c’ に定義されている 関数 asm_output_bss を使うようにして欲しい。 それが不可能な場合は、assemble_name (stream, name) という式を使ってその名前自身を出力する。 その前後で、その名前を定義するアセンブラ構文を追加し、次に改行を 出力する。

このマクロは、非初期化グローバル変数のアセンブラ定義がどのように出力 されるかを制御する。このマクロは、c++ のように common データを 持たない言語を適切にサポートするためにある。 だが、このマクロは現時点では全てのターゲットで定義されているわけではない。 このマクロと ASM_OUTPUT_ALIGNED_BSS が定義されていない場合は、 ASM_OUTPUT_COMMONASM_OUTPUT_ALIGNED_COMMONASM_OUTPUT_ALIGNED_DECL_COMMON が使われる。

ASM_OUTPUT_ALIGNED_BSS (stream, decl, name, size, alignment)

ASM_OUTPUT_BSS に似ているが、違いは、必要なアラインメントを 別個の明示的な引数として取ることである。 このマクロを定義すると、ASM_OUTPUT_BSS の代わりに使われ、 変数で必要とされるアラインメントをより柔軟に扱えるようになる。 アライメントはビット数で指定する。

このマクロを定義するときは ‘varasm.c’ で定義されている 関数 asm_output_aligned_bss を使うようにして欲しい。

ASM_OUTPUT_SHARED_BSS (stream, decl, name, size, rounded)

定義されていれば、ASM_OUTPUT_BSS とほぼ同様だが、 違いは name が共有されるときに使われることである。 定義されていない場合は、ASM_OUTPUT_BSS が使われる。

ASM_OUTPUT_LOCAL (stream, name, size, rounded)

一個の C の文(セミコロン無し)。標準入出力ストリーム stream に サイズが size バイトで、name という名前の ローカル・コモン・ラベルのアセンブラ定義を出力する。 変数 rounded は、呼び出し側が要求するアラインメントに切り上げられる サイズである。

という式を使ってその名前自身を出力する。 その前後で、その名前を定義するアセンブラ構文を追加し、次に改行を 出力する。

このマクロは、非初期化静的変数のアセンブラ定義をどのように出力するかを 制御する。

ASM_OUTPUT_ALIGNED_LOCAL (stream, name, size, alignment)

ASM_OUTPUT_LOCAL とほぼ同じだが、違いは、必要なアラインメントを 別個の明示的な引数として取ることである。 このマクロを定義すると、ASM_OUTPUT_LOCAL の代わりに使われ、 変数で必要とされるアラインメントをより柔軟に扱えるようになる。 アライメントはビット数で指定する。

ASM_OUTPUT_ALIGNED_DECL_LOCAL (stream, decl, name, size, alignment)

ASM_OUTPUT_ALIGNED_DECL とほぼ同じだが、違いは、 出力すべき変数がひとつあれば、その宣言 decl を指定する点にある。 対応する変数がなければ decl には NULL_TREE を指定する。 このマクロを定義すると、GNU CC は ASM_OUTPUT_DECLASM_OUTPUT_ALIGNED_DECL の両方の代わりに使う。 何を出力するかを選択するために変数の宣言が見える必要があるときは このマクロを定義すること。

ASM_OUTPUT_SHARED_LOCAL (stream, name, size, rounded)

定義されていれば、ASM_OUTPUT_LOCAL とほぼ同様だが、 違いは name が共有されるときに使われることである。 定義されていない場合は、ASM_OUTPUT_LOCAL が使われる。


This document was generated using texi2html 1.78.