Partilhar via


Visão geral do Assembler embutido

Específicos do Microsoft

O montador embutido permite a você incorporar instruções de linguagem assembly em seus programas de código-fonte c e C++ sem etapas adicionais de assembly e o link.O montador in-line baseia-se no compilador — não é necessário um montador separado, como o Microsoft Macro Assembler (MASM).

Como o montador in-line não requer assembly separado e etapas de link, é mais conveniente que um montador separado.Código de assembly embutido pode usar qualquer c ou C++ função ou variável de nome que está no escopo, portanto, é fácil de integrá-lo ao código do seu programa de c e C++.E porque o código de assembly pode ser misturado com instruções de c e C++, ele pode realizar tarefas que são incômodos ou impossíveis em c ou C++ sozinho.

O __asm palavra-chave invoca o montador in-line e pode aparecer sempre que uma declaração de c ou C++ é legal.Ele não pode aparecer sozinha.Ele deve ser seguido por uma instrução de assembly, um grupo de instruções entre chaves, ou, na pior das hipóteses, um par de chaves de vazio.O termo "__asm bloco" aqui se refere a qualquer instrução ou o grupo de instruções, ou não entre chaves.

O código a seguir é uma simples __asm bloco entre chaves.(O código é uma seqüência de prólogo da 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

Desde que o __asm palavra-chave é um separador de instrução, você também pode colocar instruções assembly na mesma linha:

__asm push ebp
__asm mov  ebp, esp
__asm sub  esp, __LOCAL_SIZE

Específicos do Microsoft final

Consulte também

Referência

Montador embutido