Ескерім
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Блок, относящийся только к системам Майкрософт
Встроенный ассемблер позволяет внедрять инструкции языка ассемблера непосредственно в исходные программы С и С++ без дополнительных шагов по сборке и компоновке. Встроенный код на ассемблере встроен в компилятор, поэтому вам не требуется отдельный сборщик для языка ассемблера, такой как Microsoft Macro Assembler (MASM).
Так как встроенный ассемблер не требует отдельных действий по сборке и компоновке, он является более удобным, чем отдельный ассемблер. Во встроенном коде на языке ассемблера можно использовать любое имя переменной или функции языка C или C++, находящееся в области видимости, поэтому его легко интегрировать с кодом C и C++ программы. Поскольку в коде на языке ассемблера можно одновременно использовать операторы C или C++, с его помощью можно выполнять задачи, которые слишком сложно или невозможно выполнить только в C или только в C++.
Ключевое слово __asm вызывает встроенный сборщик и может отображаться везде, где является юридический оператор C или C++. Он не может отображаться самостоятельно. За ним должна следовать инструкция по сборке, группа инструкций, заключенная в круглые скобки, либо, в крайнем случае, пустая пара круглых скобок. Термин "блок __asm
" в этом разделе относится к любой инструкции или группе инструкций, в скобках или без них.
Следующий код — это простой блок __asm
, заключенный в фигурные скобки. (Этот код является последовательностью пролога пользовательской функции.)
// 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
}
}
Кроме того, можно поставить __asm
перед каждой инструкцией по сборке:
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
Поскольку ключевое слово __asm
является разделителем операторов, можно также помещать инструкции ассемблера на одной строке:
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
Завершение блока, относящегося только к системам Майкрософт