__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;OPTassembly-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