2010-09-08 22 views
5

¿Alguien sabe una buena manera de hacer eso?GCC C++ y código de ensamblaje en línea?

Esto no parece demasiado amigable:

__asm("command 1" 
     "command 2" 
     "command 3"); 
  1. ¿Realmente tengo que poner una comilla doble en cada línea?
  2. ¿Soy el único que piensa que esto es una PartyPooper MAYOR?

Además ... dado que los literales de cadena multilínea no funcionan en GCC, tampoco pude engañar con eso.

Gracias por su atención. Que tengas un buen día.

Respuesta

8

siempre encontrar algunos ejemplos en Internet que el chico insertar manualmente una ficha y nueva línea en lugar de \ t \ n, sin embargo, no funciona para mí. No es muy seguro si su ejemplo aún compilar .. pero esto es como lo hago:

muy feo manera:

asm("xor %eax,%eax"); 
asm("mov $0x7c802446, %ebx"); 
asm("mov $500, %ax"); 
asm("push %eax"); 
asm("call *%ebx"); 

O esto menos fea:

asm("xor %eax,%eax   \t\n\ 
    mov $0x7c802446, %ebx \t\n\ 
    mov $1000, %ax   \t\n\ 
    push %eax    \t\n\ 
    call *%ebx    \t\n\ 
    "); 
+0

Gracias compañero, que es más o menos de lo que he visto en ejemplos, sin embargo, ¡todavía es "menos feo"! Me quita la motivación de escribir asm. –

Cuestiones relacionadas