Assembler inline (C)Inline Assembler (C)

Sezione specifica MicrosoftMicrosoft Specific

È possibile utilizzare l'assembler inline per incorporare le istruzioni in linguaggio assembly direttamente nei programmi di origine C senza effettuare dei passaggi aggiuntivi di collegamento e di assembly.The inline assembler lets you embed assembly-language instructions directly in your C source programs without extra assembly and link steps. L'assembler inline è incorporato nel compilatore, pertanto non è necessario utilizzare un assembler separato come Microsoft Macro Assembler (MASM).The inline assembler is built into the compiler — you don't need a separate assembler such as the Microsoft Macro Assembler (MASM).

Poiché l'assembler inline non richiede un assembly separato e operazioni di collegamento, è più conveniente di un assembly separato.Because the inline assembler doesn't require separate assembly and link steps, it is more convenient than a separate assembler. Il codice assembly inline può utilizzare qualsiasi variabile C o nome di funzione inclusa nell'ambito, quindi può essere facilmente integrato con il codice C del programma.Inline assembly code can use any C variable or function name that is in scope, so it is easy to integrate it with your program's C code. E poiché il codice assembly può essere combinato con istruzioni di C, può eseguire attività complesse o impossibili in C da solo.And because the assembly code can be mixed with C statements, it can do tasks that are cumbersome or impossible in C alone.

La parola chiave __asm consente di richiamare l'assembler inline e può essere visualizzata ovunque un'istruzione C sia valida.The __asm keyword invokes the inline assembler and can appear wherever a C statement is legal. Non può essere visualizzata da sola.It cannot appear by itself. Deve essere seguita da un'istruzione dell'assembly, da un gruppo di istruzioni racchiuse tra parentesi graffe o almeno da una coppia di parentesi graffe vuote.It must be followed by an assembly instruction, a group of instructions enclosed in braces, or, at the very least, an empty pair of braces. Il termine "__asm block" qui si riferisce a qualsiasi istruzione o gruppo di istruzioni, racchiuso o meno tra parentesi graffe.The term "__asm block" here refers to any instruction or group of instructions, whether or not in braces.

Il codice seguente è un blocco __asm semplice racchiuso tra parentesi graffe.The code below is a simple __asm block enclosed in braces. Il codice è una sequenza di prologo di funzione personalizzata.(The code is a custom function prolog sequence.)

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

In alternativa, è possibile inserire __asm davanti a ogni istruzione dell'assembly:Alternatively, you can put __asm in front of each assembly instruction:

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

Poiché la parola chiave __asm è un separatore di istruzione, è anche possibile inserire le istruzioni di assembly nella stessa riga:Since the __asm keyword is a statement separator, you can also put assembly instructions on the same line:

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

Fine sezione specifica MicrosoftEND Microsoft Specific

Vedere ancheSee Also

Attributi di funzioniFunction Attributes