Freigeben über


Inlineassembler-Übersicht

Microsoft-spezifisch

Der Inlineassembler können Sie Assemblysprachanweisungen in C# und C++-Quellprogrammen ohne zusätzliche Assembly- und Link Bereitstellungsschritte einbetten.Der Inlineassembler wird in den Compiler erstellt benötigen Sie keinen separaten Assembler (z. B. der Microsoft Macro Assembler (MASM).

Da der Inlineassembler nicht Schritte der separaten Assemblys und des Links erfordert, ist es einfacher als ein separater Assembler.Inlineassemblycode kann jedes C oder C++-Variable oder Funktionsnamens verwenden, die im Gültigkeitsbereich befindet, ist es einfach, sodass er mit C- und C++-Code des Programms zu integrieren.Und da der Assemblycode mit C- und C++-Anweisungen kombiniert werden kann, kann diese Aufgaben ausführen, die lästig oder in C oder C++ nicht unmöglich sind.

Das Schlüsselwort __asm den Inlineassembler auf und kann, oder C++-Anweisung scheinen, wo eine gültig ist.Sie kann nicht allein angegeben werden.Es muss eine Assemblyanweisung, einer Gruppe von Anweisungen, die in geschweifte Klammern eingeschlossen werden, oder allerwenigsten aus einem leeren Paar Klammern folgen.Der Begriff „Block“ bezieht sich auf eine beliebige Stelle__asm-Anweisung bzw. Gruppe von Anweisungen, ob in geschweifte Klammern an.

Der folgende Code ist ein einfacher __asm-Block, der in geschweifte Klammern eingeschlossen wird.(Der Code ist eine benutzerdefinierte Funktion einleitungs sequence).

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

Alternativ können Sie __asm vor jeder Assemblyanweisung setzen:

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

Da das __asm-Schlüsselwort ein Trennzeichen ist, können Sie auch Assemblyanweisungen auf dieselbe Zeile einfügen:

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

Microsoft ENDES bestimmten

Siehe auch

Referenz

Inlineassembler