Přehled inline assembleru
Specifické pro Microsoft
Vložený assembler umožňuje vložit instrukce jazyka sestavení do zdrojových programů C a C++ bez dalších kroků sestavení a propojení. Vložený assembler je integrován v kompilátoru, takže nepotřebujete používat samostatný kompilátor, jako například Microsoft Macro Assembler (MASM).
Protože vložený assembler nevyžaduje samostatné kroky sestavení a propojení, je pohodlnější než samostatný assembler. Vložený kód sestavení může použít libovolnou proměnnou jazyka C nebo C++ nebo název funkce, která je v oboru, takže je snadné ji integrovat s kódem C a C++. A protože kód sestavení lze kombinovat s příkazy jazyka C a C++, může provádět úlohy, které jsou těžkopádné nebo nemožné v jazyce C nebo C++ samostatně.
Klíčové slovo __asm vyvolá vložený assembler a může se objevit všude, kde je prohlášení jazyka C nebo C++ legální. Nemůže se zobrazit samostatně. Musí následovat instrukce sestavení, skupina instrukcí uzavřených ve složených závorkách nebo alespoň prázdná dvojice složených závorek. Termín "__asm
blok" zde odkazuje na jakoukoli instrukci nebo skupinu instrukcí, ať už ve složených závorkách nebo ne.
Následující kód je jednoduchý __asm
blok uzavřený ve složených závorkách. (Kód je posloupnost vlastní funkce sekvence prologu.)
// 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
}
}
Alternativně můžete před každou instrukci sestavení umístit __asm
:
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
Protože klíčové slovo __asm
představuje oddělovač výrazů, lze také umístit pokyny sestavení na stejný řádek:
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
END Microsoft Specific