Información general en línea de código ensamblador
Específicos de Microsoft
El ensamblador en línea permite incrustar instrucciones en lenguaje de ensamblado en programas de origen de c y C++ sin pasos adicionales del ensamblado y el vínculo.El ensamblador en línea se compila en el compilador — no necesita un ensamblador independiente como Microsoft macro assembler (MASM).
Dado que el código ensamblador en línea no requiere pasos de ensamblado independiente y de vínculo, es más conveniente que un ensamblador independiente.El código de ensamblado en línea puede utilizar cualquier nombre de C o variable o de función de C++ que está en el ámbito, por lo que es fácil integrarlo con el código de C y C++ del programa.Y porque el código de ensamblado se pueden mezclar con las instrucciones de c y C++, puede realizar tareas que son no convenientes o imposibles en C o C++ sólo.
La palabra clave de __asm invoca el ensamblador en línea y puede aparecer en cualquier lugar donde el C. o instrucción de C++ es válido.no puede aparecer en sí mismo.Debe ir seguida de una instrucción de ensamblado, un grupo de instrucciones entre llaves, o, como mínimo, un par vacío de llaves.El término “__asm ” bloque aquí hace referencia a cualquier instrucción o grupo de instrucciones, si entre llaves.
El código siguiente es __asm simple bloqueado que va entre llaves.(El código se es una secuencia personalizada de prólogo de función).
// 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, puede colocar __asm delante de cada instrucción de ensamblado:
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
Puesto que la palabra clave de __asm es un separador de la instrucción, también puede colocar las instrucciones de ensamblado en la misma línea:
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
Específico de Microsoft de FINAL