Sdílet prostřednictvím


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

    assembly-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

Viz také

Referenční dokumentace

Klíčových slov jazyka C++

Inline Assembler