Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Specifické pro Microsoft
Klíčové __asm slovo vyvolá vložený assembler a může se objevit všude, kde je prohlášení jazyka C nebo C++ legální. Nemůže se zobrazit sám. Musí následovat instrukce sestavení, skupina instrukcí uzavřených ve složených závorkách nebo minimálně prázdná dvojice složených závorek. Termín "__asm blok" zde odkazuje na jakoukoli instrukci nebo skupinu instrukcí, ať už ve složených závorkách nebo ne.
Poznámka:
Podpora jazyka MSVC pro klíčové slovo Standard C++ asm je omezena na skutečnost, že kompilátor negeneruje chybu u klíčového slova.
asm Blok ale negeneruje žádný smysluplný kód. Používejte __asm místo asm.
Gramatika
asm-block:
__asm
assembly-instruction;volit
__asm {
assembly-instruction-list};volit
assembly-instruction-list:
assembly-instruction;volitelný
Poznámky
Pokud se používá bez závorek, __asm klíčové slovo znamená, že zbytek řádku je příkazem jazyka sestavení. Pokud se používá se složenými závorkami, znamená to, že každý řádek mezi složenými závorkami je příkazem jazyka sestavení. Kvůli kompatibilitě s předchozími verzemi _asm je synonymem, pokud __asm není zadána možnost /Za kompilátoru (Zakázat jazyková rozšíření ).
__asm Vzhledem k tomu, že klíčové slovo je oddělovač příkazů, můžete umístit instrukce sestavení na stejný řádek.
Před sadou Visual Studio 2005 se pokyny
__asm int 3
nezpůsobila generování nativního kódu při kompilaci pomocí /clr. Kompilátor přeložil instrukce na přerušení clR.
__asm int 3 výsledkem je generování nativního kódu pro funkci. Pokud chcete, aby funkce způsobila v kódu zarážku a pokud chcete tuto funkci zkompilovat do knihovny MSIL, použijte __debugbreak.
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 před každou instrukci sestavení umístit __asm :
__asm mov al, 2
__asm mov dx, 0xD007
__asm out dx, al
__asm Vzhledem k tomu, že klíčové slovo je oddělovač příkazů, můžete také umístit instrukce 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 (uzavření bloku do __asm složených závorek) má určité výhody. Složené závorky jasně oddělují kód sestavení od kódu jazyka C nebo C++ a vyhněte se zbytečnému opakování klíčového __asm slova. Složené závorky můžou také bránit nejednoznačnostem. Pokud chcete vložit příkaz C nebo C++ na stejný řádek jako __asm blok, musíte ho uzavřít do složených závorek. Bez závorek nemůže kompilátor zjistit, kde kód sestavení zastaví a začínat příkazy jazyka C nebo C++. A konečně, protože text ve složených závorkách má stejný formát jako běžný text MASM, 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 jazyce C a C++ nemají složené závorky ohraničující __asm blok vliv na obor proměnných. Můžete také vnořit __asm bloky, vnoření nemá vliv na obor proměnných.
END Specifikace Microsoftu