__asm キーワード (先頭の 2 つの下線に注意) は、asm キーワードと同義語です。-pedantic が有効な場合、コンパイラは asm キーワードの使用について警告を発行します。これらの警告を回避するには __asm を使用します。__asm 文の書式は次のようになります。
__asm("string");
ここで、string は有効なアセンブリ言語文です。
この文は、与えられたアセンブラテキストをアセンブリファイルに直接出力します。関数スコープではなくファイルスコープで宣言された基本的な asm 文は、「グローバル asm 文」と呼ばれます。ほかのコンパイラはこの文をトップレベル asm 文と呼びます。
グローバル asm 文は、指定された順に出力されます。つまり、互いの相対的な順序が維持され、周囲の関数に対する相対位置も維持されます。
より高い最適化レベルでは、参照されていないと判断した関数をコンパイラが削除することがあります。グローバルアセンブリ言語文内からどの関数が参照されているかをコンパイラは評価できないため、間違って削除される可能性があります。
テンプレートとオペランドの仕様を提供する、拡張された asm 文は、グローバルにすることは許可されません。__asm および __asm__ はキーワード asm の同義語であり、互いに入れ替えて使用できます。
アーキテクチャーに固有の命令を指定するときは、対応する -xarch 値を指定してコンパイルエラーを回避する必要がある場合があります。