Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Específico da Microsoft
O assembler em linha permite incorporar instruções de linguagem de montagem em seus programas de origem C e C++ sem etapas extras de montagem e link. O assembler embutido é incorporado ao compilador — você não precisa de um assembler separado, como o Microsoft Macro Assembler (MASM).
Como o montador em linha não requer etapas separadas de montagem e ligação, é mais conveniente do que um montador separado. O código de montagem em linha pode usar qualquer variável C ou C++ ou nome de função que esteja no escopo, por isso é fácil integrá-lo com o código C e C++ do seu programa. E como o código de assembly pode ser misturado com instruções C e C++, ele pode executar tarefas que são complicadas ou impossíveis apenas em C ou C++.
A palavra-chave __asm invoca o compilador inline e pode aparecer sempre que uma instrução C ou C++ for válida. Não pode aparecer por si só. Deve ser seguido por uma instrução de montagem, um grupo de instruções fechado em chaves ou, no mínimo, um par de chaves vazio. O termo "__asm
bloco" aqui refere-se a qualquer instrução ou grupo de instruções, com ou sem acólitos.
O código a seguir é um bloco simples __asm
fechado em chaves. (O código é uma sequência prolog de função personalizada.)
// 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
}
}
Como alternativa, você pode colocar __asm
na frente de cada instrução de montagem:
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
Como a __asm
palavra-chave é um separador de instruções, você também pode colocar instruções de montagem na mesma linha:
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
END Específico da Microsoft