Přehled inline assembleru

Specifické pro Microsoft

Vložený assembler umožňuje vložit instrukce jazyka sestavení do zdrojových programů jazyka 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žívat libovolnou proměnnou jazyka C nebo C++ nebo název funkce, která je v oboru, takže se snadno integruje s kódem C a C++ vašeho programu. A vzhledem k tomu, že kód sestavení lze směšovat s příkazy C a C++, může provádět úlohy, které jsou v jazyce C nebo C++ těžkopádné nebo nemožné.

Klíčové __asm vyvolá vložený assembler a může se objevit všude, kde je příkaz jazyka C nebo C++ právní. Nemůže se zobrazit sám o sobě. Musí být následována instrukcí sestavení, skupinou instrukcí uzavřenými ve složených závorkách nebo přinejmenším prázdnou dvojicí složených závorek. Výraz __asm "blok" zde odkazuje na libovolnou instrukci nebo skupinu instrukcí bez ohledu na to, jestli jsou ve složených závorkách či nikoli.

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 __asm instrukci sestavení umístit :

__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

Viz také

Vložený assembler