Nuestros investigadores estrellas han agotado sus provisiones de café, por su búsqueda todo el tiempo por la resolución, hasta que Rubén halló el hallazgo en Gogs así que hoy la comparte aquí.
asm-declaración brinda la capacidad de incrustar código fuente en lenguaje ensamblador dentro de un programa C++. Esta declaración se admite condicionalmente y está definida por la implementación, lo que significa que puede no estar presente e, incluso cuando la proporciona la implementación, no tiene un significado fijo.
Sintaxis
asm ( cadena_literal) ; |
Explicación
los cadena_literal es típicamente un programa corto escrito en lenguaje ensamblador, que se ejecuta cada vez que se ejecuta esta declaración. Los diferentes compiladores de C++ tienen reglas que varían enormemente para las declaraciones de asm y diferentes convenciones para la interacción con el código de C++ circundante.
Como otras declaraciones de bloque, esta declaración puede aparecer dentro de un bloque (un cuerpo de función u otra declaración compuesta) y, como todas las demás declaraciones, esta declaración también puede aparecer fuera de un bloque.
Ejemplos
Demuestra dos tipos de sintaxis de ensamblaje en línea que ofrece el compilador GCC. Este programa solo funcionará correctamente en la plataforma x86_64 bajo Linux.
#includeextern"C"intfunc();// the definition of func is written in assembly language// raw string literal could be very usefulasm(R"( .globl func .type func, @function func: .cfi_startproc movl $7, %eax ret .cfi_endproc )");intmain()int n =func();// extended inline assemblyasm("leal (%0,%0,4),%0":"=r"(n):"0"(n)); std::cout <<"7*5 = "<< n << std::endl;// flush is intentional// standard inline assemblyasm("movq $60, %raxnt"// the exit syscall number on Linux"movq $2, %rdint"// this program returns 2"syscall");
Producción:
7*5=35
enlaces externos
- CÓMO de ensamblaje en línea GCC
- Ensamblaje en línea IBM XL C/C++
- Ensamblaje en línea Intel C++
- Ensamblador en línea de Visual Studio 2013
- Declaraciones de Sun Studio 12 Asm
- Ensamblaje en línea para HP-UX basado en Itanium
Más adelante puedes encontrar las observaciones de otros sys admins, tú además tienes la opción de insertar el tuyo si te gusta.