__asm
Konkrétní společnosti Microsoft
__asm Klíčové slovo vyvolá inline assembler a se může objevit, ať je právní prohlášení c nebo C++.Nemůže být použit samostatně.Musí následovat instrukce sestavení skupiny pokyny, které jsou uzavřeny ve složených závorkách, nebo přinejmenším, prázdný pár závorek.Pojem "__asm bloku" zde odkazuje na všechny instrukce nebo skupiny pokyny ve složených závorkách.
[!POZNÁMKA]
Podpora Visual C++ pro standardní C++ asm je omezena na skutečnost, že kompilátor nevygeneruje chybu na klíčové slovo klíčové slovo.Však asm bloku nebudou generovat kód smysluplné.Use __asminstead of asm.
Syntaxe:
__asm sestavení instrukce [;] ]
__asm { sestavení instrukce seznam } [;] ]
Gramatika
__asm assembly-instruction ;OPT
__asm { assembly-instruction-list };OPT
sestavení instrukce seznam:
assembly-instruction;OPTassembly-instruction;assembly-instruction-list;OPT
Pokud bez závorek, __asm klíčové slovo znamená, že zbytek řádku příkazu jazyka symbolických adres.Pokud se závorkami, znamená to, že každý řádek mezi závorky je příkazu jazyka symbolických adres.Pro kompatibilitu s předchozími verzemi _asm je synonymum pro __asm.
Protože __asm klíčové slovo je oddělovač prohlášení, pokyny pro sestavení můžete umístit na stejném řádku.
Před Visual C++ 2005 instrukce
__asm int 3
nezpůsobí nativní kód generován při kompilována s /clr; Kompilátor přeložit pokyn přerušení instrukce CLR.
__asm int 3Nyní je výsledkem generování nativního kódu funkce.Pokud chcete, aby funkce způsobit místo přerušení do kódu a pokud chcete, aby funkce sestavených MSIL, použití __debugbreak.
Příklad
Následující fragment kódu je jednoduchý __asm blok, které jsou uzavřeny ve složených závorkách:
__asm {
mov al, 2
mov dx, 0xD007
out dx, al
}
Alternativně můžete umístit __asm z každého sestavení instrukce:
__asm mov al, 2 __asm mov dx, 0xD007 __asm out dx, al
Protože __asm klíčové slovo je oddělovač prohlášení, pokyny pro sestavení můžete také umístit na stejném řádku:
__asm mov al, 2
__asm mov dx, 0xD007
__asm out dx, al
Všechny tři příklady vygenerovat stejný kód, ale první styl (orámování __asm zablokovat ve složených závorkách) má několik výhod.Složené závorky jasně oddělit od kódu c nebo C++ kódu sestavení a vyhnout se může docházet ke zbytečnému opakování __asm klíčové slovo.Závorky můžete také zabránit dvojznačnosti.Pokud chcete umístit na stejném řádku jako příkaz c nebo C++ __asm blok, musí uzavřít blok ve složených závorkách.Kompilátor bez závorek, nelze zjistit, kde c nebo C++ příkazy sestavení kódu zastaví a začít.Nakonec protože text v závorkách má stejný formát jako obyčejný text jazyk MASM, můžete snadno vyjmout a vložit text ze stávající jazyk MASM zdrojové soubory.
Na rozdíl od složených závorek v c a C++ závorky kolem __asm bloku neovlivňují rozsahu proměnné.Můžete také vnořit __asm blokuje; vnoření nemá vliv na rozsah proměnné.
Konec konkrétní společnosti Microsoft