asm

C に適用 C++ に適用

目的

asm ステートメントの解釈および以降のコード生成を制御する。

構文

C に適用 デフォルトは、言語レベルにかかわらず、-qasm=gcc です。サブオプションなしで -qasm を指定した場合は、デフォルトを指定した場合と同じになります。

        .-asm=gcc-.
>>- -q--+-asm-----+--+------+----------------------------------><
        '-noasm---'  '-=gcc-'
 
 

C++ に適用 デフォルトは、言語レベルにかかわらず、-qasm=gcc です。

        .-asm=gcc-.
>>- -q--+-asm-----+--+--------------+--------------------------><
        '-noasm---'  '-=-+-gcc----+-'
                         '-stdcpp-'
 
 

-qasm オプションとその否定の書式は、asm ステートメントに対応するコードが出されるかどうかを制御します。このオプションの肯定の書式は、ソース・コードの asm ステートメントに対応するコードを生成するように、コンパイラーに指示します。これらのサブオプションでは、asm ステートメントの内容を解釈するために使用される構文を指定します。たとえば、-qasm=gcc を指定すると、コンパイラーは、asm ステートメントについて拡張 gcc 構文およびセマンティクスを認識するようになります。

C に適用 トークン asm は C 言語キーワードではありません。したがって、言語レベル stdc89 および stdc99 (それぞれ C89 および C99 標準への厳密な準拠を指示します) では、オプション -qkeyword=asm も指定して、アセンブリー・コードを生成するソースをコンパイルする必要があります。他のすべての言語レベルでは、オプション -qnokeyword=asm が有効な場合を除き、トークン asm はキーワードとして処理されます。C では、XL 固有のバリアント __asm および __asm__ がすべての言語レベルでキーワードであり、これらを使用不可にすることはできません。

C++ に適用 トークン asm__asm、および __asm__ はすべての言語レベルでキーワードです。-qnokeyword=token のサブオプションを使用すると、これらの予約語のそれぞれを個々に使用不可にすることができます。

事前定義マクロ

asm がキーワードとして処理されるときは常に、コンパイラーは、指定されたアセンブリー言語構文に応じて、以下の互いに排他的なマクロの 1 つを事前定義します。アセンブラー・コードが生成されると、マクロの値は 1 になります。生成されない場合、0 です。

__IBM_GCC_ASM
__IBM_STDCPP_ASM (C++ のみ)

通知メッセージ

オプション -qinfo=eff も有効なときには、asm ステートメントに対応するコードが生成されていない場合、コンパイラーは通知メッセージを出します。

asm ステートメントが有効な言語フィーチャーとして認識されるときは常に、オプション -qinfo=por は、通知メッセージでそれを報告するようにコンパイラーに指示します。 C 言語レベル stdc89 または stdc99 では、オプション -qkeyword=asm も有効でなければなりません。

以下のコードの断片は、-qasm コンパイラー・オプションの簡単な使用法を示しています。

int a, b, c;
int main() {
    asm("add %0, %1, %2" : "=r"(a) : "r"(b), "r"(c) );
}

関連参照

IBM Copyright 2003