Cenni preliminari sull'assembler inline
Specifici di Microsoft
L'assembler inline consente di importare le istruzioni in linguaggio assembly nei programmi di origine C++ e c# senza passaggi aggiuntivi di collegamento e dell'assembly.L'assembler inline viene compilato nel compilatore - non è necessario un assembly distinto come Microsoft Macro Assembler (MASM.
Poiché l'assembler inline non richiede operazioni di collegamento e dell'assembly separato, è preferibile di un assembly separato.Il codice assembly inline può utilizzare qualsiasi nome c# o di variabile o di funzioni C++ che si trova in, pertanto è facile integrarlo con il codice C e C++ del programma.E poiché il codice assembly può essere combinato con le istruzioni di c# e C++, è possibile apportare le attività che sono complesse o è contemplata in c o C++ da solo.
__asm la parola chiave richiama l'assembler inline e può sembrare ovunque a-c l'istruzione o C++ sia valido.Non può essere utilizzata da sola.Deve essere seguita da un'istruzione di assembly, da un gruppo di istruzioni racchiuse tra parentesi graffe, o, per lo meno, da una coppia di parentesi vuote graffe.il termine “__asm il blocco„ qui si riferisce a qualsiasi istruzione o gruppo di istruzioni, indipendentemente dal fatto che in parentesi graffe.
Il codice seguente è un semplice __asm blocco racchiusi tra parentesi.(Codice è una sequenza personalizzata di prologo di funzione.)
// 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
}
}
In alternativa, è possibile inserire __asm davanti a ogni istruzione di assembly:
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
Da __asm la parola chiave è un separatore di un'istruzione, è anche possibile inserire le istruzioni di assembly sulla stessa riga:
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
Microsoft FINALE specifico