Partilhar via


Assembler embutido (C)

Seção específica da Microsoft

O assembler integrado permite inserir instruções da linguagem de assembly diretamente aos seus programas de código-fonte C sem etapas adicionais de assembly e vinculação. O assembler integrado é incorporado ao compilador e, portanto, não é necessário um assembler separado, como o MASM (Microsoft Macro Assembler).

Como o assembler integrado não requer etapas de link e do assembly separado, é mais conveniente que um assembler separado. O código do assembly integrado pode usar qualquer nome de variável ou de função C que esteja no escopo. Portanto, ele é de fácil integração com código C do programa. E como o código do assembly pode ser combinado com as instruções de C, ele poderá realizar as tarefas que são incômodas ou impossíveis apenas em C.

A palavra-chave __asm invoca o assembler integrado e pode aparecer sempre que uma declaração C é válida. Ela não pode aparecer sozinha. Ela deve ser seguida por uma instrução de assembly, um grupo de instruções entre chaves ou, pelo menos, um par vazio de chaves. O termo "bloco __asm" refere-se aqui a qualquer instrução ou grupo de instruções, estando ou não entre chaves.

O código abaixo é um bloco simples de __asm entre chaves. (O código é uma sequência personalizada de prólogos da função.)

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

Como alternativa, você pode colocar __asm na frente de cada instrução de assemblies:

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

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

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

Fim da seção específica da Microsoft

Confira também

Atributos de função