__asm

Specifické pro Microsoft

__asmKlíčové slovo vyvolá vložený assembler a může se objevit všude, kde je platný příkaz jazyka C nebo C++. Nemůže být použit sám sebou. Musí následovat instrukce sestavení, skupina instrukcí uzavřených ve složených závorkách nebo, minimálně prázdný pár složených závorek. Termín " __asm Block" zde odkazuje na jakoukoli instrukci nebo skupinu instrukcí, bez ohledu na to, zda jsou v závorkách.

Poznámka

Podpora Visual C++ pro standardní asm klíčová slova jazyka C++ je omezená na skutečnost, že kompilátor negeneruje chybu pro klíčové slovo. Nicméně asm blok nebude generovat žádný smysluplný kód. __asmMísto použijte asm .

Gramatika

ASM – blok:
    __asm__asm;;
    __asm {__asm {}; instrukcí }

seznam instrukcí pro sestavení:
    sestavení – instrukcevýslovný souhlas
    sestavení – instrukcesestavení – seznam instrukcí výslovný souhlas

Poznámky

Pokud se používá bez složených závorek, __asm klíčové slovo znamená, že zbytek řádku je příkaz Assembly-Language. Pokud se používá se složenými závorkami, znamená to, že každý řádek mezi složenými závorkami je příkaz Assembly-Language. Kvůli kompatibilitě s předchozími verzemi _asm je synonymum pro __asm .

Vzhledem k tomu __asm , že klíčové slovo je oddělovač příkazů, lze umístit pokyny sestavení na stejný řádek.

před Visual Studio 2005 instrukce

__asm int 3

nezpůsobí generování nativního kódu při kompilování s /CLR; Kompilátor přeložil instrukci na instrukci ukončení CLR.

__asm int 3 Nyní má za následek generování nativního kódu pro funkci. Chcete-li, aby funkce způsobila v kódu bod přerušení, a pokud chcete tuto funkci zkompilovat do jazyka MSIL, použijte __debugbreak.

Kvůli kompatibilitě s předchozími verzemi _asm je synonymum pro, __asm Pokud není zadána možnost kompilátoru _asm .

Příklad

Následující fragment kódu je jednoduchý __asm blok uzavřený ve složených závorkách:

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

Alternativně můžete umístit __asm před každou instrukci sestavení:

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

Protože __asm klíčové slovo je oddělovač příkazů, můžete také umístit pokyny sestavení na stejný řádek:

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

Všechny tři příklady generují stejný kód, ale první styl (ohraničující __asm blok v závorkách) obsahuje některé výhody. Složené závorky jasně oddělují kód sestavení z kódu jazyka C nebo C++ a zabraňují nutnosti opakování __asm klíčového slova. Složené závorky můžou také zabránit nejasnostem. Pokud chcete vložit příkaz jazyka C nebo C++ na stejný řádek jako __asm blok, je nutné uzavřít blok do složených závorek. Bez složených závorek nemůže kompilátor sdělit, kde se zastaví kód sestavení a začnou příkazy jazyka C nebo C++. Proto vzhledem k tomu, že text v závorkách má stejný formát jako obyčejný MASM text, můžete snadno vyjmout a vložit text z existujících zdrojových souborů MASM.

Na rozdíl od složených závorek v C a C++, složené závorky ohraničující __asm blok neovlivňují rozsah proměnné. Lze také vnořit __asm bloky; vnořování nemá vliv na rozsah proměnné.

Specifické pro konec Microsoftu

Viz také

Klíčová slova
Vložený Assembler