Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Specyficzne dla firmy Microsoft
Wbudowany asembler umożliwia osadzanie instrukcji języka zestawów w programach źródłowych C i C++ bez dodatkowych kroków zestawów i linków. Wbudowany asembler jest wbudowany w kompilator — nie potrzebujesz oddzielnego asemblera, takiego jak Microsoft Macro Assembler (MASM).
Ponieważ asembler wbudowany nie wymaga oddzielnych kroków zestawów i łączy, jest wygodniejszy niż oddzielny asemblera. Wbudowany kod zestawu może używać dowolnej zmiennej C lub C++ lub nazwy funkcji, która jest w zakresie, dlatego łatwo jest zintegrować go z kodem C i C++ programu. Ponieważ kod zestawu może być mieszany z instrukcjami C i C++, może wykonywać zadania, które są kłopotliwe lub niemożliwe tylko w języku C lub C++.
Słowo kluczowe __asm wywołuje asemblera wbudowanego i może pojawić się wszędzie tam, gdzie instrukcja języka C lub C++ jest legalna. Nie może się pojawić samodzielnie. Należy wykonać instrukcję zestawu, grupę instrukcji ujętych w nawiasy klamrowe lub co najmniej pustą parę nawiasów klamrowych. Termin "__asm
blok" w tym miejscu odnosi się do dowolnej instrukcji lub grupy instrukcji, niezależnie od tego, czy w nawiasach klamrowych.
Poniższy kod to prosty __asm
blok ujęty w nawiasy klamrowe. (Kod jest niestandardową sekwencją prologu funkcji).
// asm_overview.cpp
// processor: x86
void __declspec(naked) main()
{
// Naked functions must provide their own prolog...
__asm {
push ebp
mov ebp, esp
sub esp, __LOCAL_SIZE
}
// ... and epilog
__asm {
pop ebp
ret
}
}
Alternatywnie można umieścić __asm
przed każdą instrukcją zestawu:
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
__asm
Ponieważ słowo kluczowe jest separatorem instrukcji instrukcji, można również umieścić instrukcje zestawu w tym samym wierszu:
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
Koniec specyfiki Microsoftu