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 ビット環境では別の方法が必要になる場合がある。インラインアセンブリは移植性を下げるため、必要な場合だけ使用する。