Udostępnij za pośrednictwem


Omówienie inline Assembler

Programu Microsoft

Asembler inline pozwala Ci na osadzić instrukcje języka asemblera programów źródłowych c i C++ bez dodatkowych czynności montażu i łącza.Asembler wbudowany jest wbudowana w kompilator — nie ma potrzeby oddzielnych assembler takich jak Microsoft Assembler makra (MORGÓW).

Ponieważ assembler wbudowanego nie wymagają oddzielnego zestawu i kroki łącze, jest wygodniejsze niż oddzielne assembler.Kodu zestawu wbudowanego można użyć dowolnej c lub C++ zmiennych lub funkcji nazwy, która jest w zasięgu, dzięki czemu można łatwo zintegrować go z programu kod c i C++.A ponieważ kodu zestawu mogą być mieszane z instrukcji c i C++, można wykonać zadania, które są kłopotliwe lub niemożliwe w c lub C++ samodzielnie.

__Asm słowa kluczowego wywołuje assembler wbudowane i mogą pojawiać się wszędzie tam, gdzie jest legalne instrukcji c lub C++.Nie może ona występować samodzielnie.To musi następować instrukcji montażu grupy ujęte w nawiasy klamrowe, lub co najmniej, instrukcje pustą parę nawiasów klamrowych.Termin "__asm bloku" tutaj odnosi się do żadnych instrukcji ani grupy instrukcje w nawiasy klamrowe.

Poniższy kod jest prosty __asm bloku ujęty w nawiasy klamrowe.(Kod jest sekwencja prolog funkcji niestandardowej).

// 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
    }
}

Alternatywnie, można umieścić __asm na początku każdej instrukcji montażu:

__asm push ebp   __asm mov  ebp, esp   __asm sub  esp, __LOCAL_SIZE

Ponieważ __asm słowo kluczowe jest separator instrukcji, można również umieścić instrukcje montażu, w tym samym wierszu:

__asm push ebp
__asm mov  ebp, esp
__asm sub  esp, __LOCAL_SIZE

KONIEC Microsoft szczególne

Zobacz też

Informacje

Asembler inline