Udostępnij za pośrednictwem


__asm

Programu Microsoft

__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.

[!UWAGA]

Visual C++ Obsługa Standard C++ asm słów kluczowych jest ograniczona do faktu, że kompilator nie wygeneruje błąd na słowie kluczowym.Jednakże asm bloku nie wygeneruje żadnych znaczących kodu.Use __asminstead of asm.

Składnia:

__asm instrukcji montażu [; ]

__asm { instrukcji montażu } [; ]

Gramatyka

  • __asm assembly-instruction ;OPT

    __asm { assembly-instruction-list };OPT

  • Instrukcja montażu:
    assembly-instruction;OPT

    assembly-instruction;assembly-instruction-list;OPT

Jeżeli jest używane bez nawiasów klamrowych, na __asm słowa kluczowego oznacza, że reszta linii jest instrukcja języka asemblera.Jeśli używana w nawiasach klamrowych, oznacza to, że każdy wiersz między nawiasy klamrowe jest instrukcja języka asemblera.Dla zgodności z poprzednimi wersjami _asm jest synonimem dla __asm.

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

Przed Visual C++ 2005, instrukcje

__asm int 3

nie był przyczyną kodu macierzystego do generowane, gdy kompilowany z /clr; Kompilator tłumaczone instrukcji do instrukcji break CLR.

__asm int 3obecnie wyniki w generowaniu kodu macierzystego dla funkcji.Jeśli chcesz, aby spowodować, że punkt przerwania w kodzie i aby ta funkcja zestawionych MSIL, należy użyć funkcji __debugbreak.

Przykład

Poniższy fragment kodu jest prosty __asm bloku ujęty w nawiasy klamrowe:

__asm {
   mov al, 2
   mov dx, 0xD007
   out dx, al
}

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

__asm mov al, 2   __asm mov dx, 0xD007   __asm out dx, al

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

__asm mov al, 2
__asm mov dx, 0xD007
__asm out dx, al

We wszystkich trzech przykładach wygenerować ten sam kod, ale pierwszego stylu (zakrywające __asm zablokować w nawiasach klamrowych) ma kilka zalet.Nawiasy klamrowe wyraźnie oddzielić kodu zestawu z kodu c lub C++ i uniknięcia powtórzenia się zbędne __asm słowa kluczowego.Nawiasy klamrowe, można również zapobiec niejasności.Jeśli chcesz umieścić instrukcję c lub C++, w tym samym wierszu, co __asm block, blok należy ująć w nawiasy klamrowe.Bez nawiasów klamrowych kompilator nie może stwierdzić, gdzie rozpocząć zatrzymuje kodu zestawu i instrukcji c lub C++.Wreszcie ponieważ tekst w nawiasach klamrowych ma ten sam format jako zwykły tekst MORGÓW, można łatwo wycinania i wklejania tekstu z istniejących plików źródłowych MORGÓW.

W odróżnieniu od nawiasy klamrowe w c i C++, nawiasy klamrowe, załączając __asm bloku nie wpływają na zakres zmiennej.Można także zagnieżdżać __asm blokuje; Zagnieżdżanie nie narusza zakresu zmiennych.

KONIEC Microsoft szczególne

Zobacz też

Informacje

Słów kluczowych języka C++

Asembler inline