インライン アセンブラーの概要
Microsoft 固有の仕様 →
インライン アセンブラーは追加のアセンブリとリンク ステップのない C および C++ プログラムの作成元のアセンブリ言語命令を埋め込むことができます。インライン アセンブラーはコンパイラにビルド — MASM (Microsoft Macro Assembler) などの別のアセンブラーは必要ではありません。
インライン アセンブラーが別のアセンブリとリンク ステップを必要としないため別のアセンブラー方が便利です。スコープ内にあるためプログラムの C および C++ コードと統合する方が簡単なインライン アセンブラー コードで C または C++ の変数または関数名を使用できます。アセンブリ コードおよび C および C++ のステートメントを混在させることができるため単独で C または C++ で使いにくくまたは不可能なタスクを実行できます。
__asm のキーワードはインライン アセンブラーを起動してC. または C++ のステートメントを実行できる場所ならどこでも指定できます。これは単独では使用できません。これは命令のアセンブリ命令中かっこで囲まれた少なくともグループ空のかっこのペアを指定する必要があります。用語 __asm 「ブロック」ここについての命令またはグループを中かっこでかどうかを示します。
次のコードは中かっこ () で囲んだ __asm の単純なブロックです。(コードはカスタム関数プロローグのシーケンスです)。
// asm_overview.cpp
// processor: x86
void __declspec(naked) main()
{
// Naked functions must provide their own prolog...
__asm {
push ebp
mov ebp, esp
sub esp, __LOCAL_SIZE
}
// ... and epilog
__asm {
pop ebp
ret
}
}
また各アセンブリ命令の前の __asm を配置できます :
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
__asm のキーワードがステートメントの区分線であるため同じ行または命令にアセンブリを配置する :
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
終了 Microsoft 固有の仕様→