Présentation d'assembly inline
Spécifique à Microsoft
L'assembly inline vous permet d'inclure l'instruction en langage assembleur dans vos programmes sources C et C++ sans étapes d'assembly et de liaison.L'assembleur inline est généré dans le compilateur - vous n'avez pas besoin d'un assembly distinct tel que le macro-assembleur Microsoft (MASM.
Étant donné que l'assembly inline n'a pas besoin des étapes d'assembly séparé et de lien, il est plus pratique qu'un assembly séparé.Le code assembleur inline peut utiliser tout C ou la variable ou le nom de la fonction C++ qui est dans la portée, il est facile de l'intégrer avec le code C et C++ de votre programme.Étant donné que le code d'assembly peut être combiné avec des instructions C et C++, il peut effectuer les tâches qui sont encombrantes ou impossibles dans seul C ou C++.
Le mot clé de __asm appelle l'assembly inline et peut être autorisé à chaque fois que le c ou l'instruction C++ est conforme.Il ne peut pas apparaître seul.Il doit être suivi par une instruction assembly, un groupe d'instruction placée entre accolades, ou, pour le moins, une paire d'accolades vide.Le terme « bloc d'__asm » fait référence ici à une instruction ou groupe d'instructions, si accolades.
Le code suivant est un bloc simple d' __asm entre accolades.(Code est une séquence personnalisée du prologue de fonction.)
// 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
}
}
Sinon, vous pouvez mettre __asm devant chaque instruction assembly :
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
Étant donné que le mot clé d' __asm est un séparateur d'instruction, vous pouvez également placer des instructions assembleur sur la même ligne :
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
TERMINEZ le détail de Microsoft