C 言語 | 高度な機能 | アセンブリ言語 - __asm

一部のコンパイラーでは、C コードへアセンブリ命令を埋め込める。アセンブリ言語はコンパイラー、CPU、システムに依存する。ここでは歴史的な Microsoft Visual C++ の x86 向け構文を扱う。

C 言語へアセンブリ言語を組み込む

C 言語は高級言語だが、ハードウェアに近い。アセンブリ言語は命令を機械語の処理へ直接対応させるため、OS のコード、ハードウェアアクセス、特殊な最適化などで役立つ場合がある。

インラインアセンブリは標準 C の機能ではない。使用前にコンパイラーのドキュメントを確認すること。Microsoft Visual C++ では歴史的に __asm キーワードが提供されていた。

__asm 文

__asm アセンブリ命令
__asm { アセンブリ命令の一覧 }

複数の命令にはブロックを使用する。

コード 1

#include <stdio.h>

int main() {
 int x = 10, y = 20, result;
 __asm {
   mov eax, x
   add eax, y
   mov result, eax
 }
 printf("%d\n", result);
 return 0;
}

この例は古い Microsoft Visual C++ x86 コンパイラーの構文を示している。現代のコンパイラーや 64 ビット環境では別の方法が必要になる場合がある。インラインアセンブリは移植性を下げるため、必要な場合だけ使用する。