2010-09-08 27 views
5

Bunu yapmanın iyi bir yolu bilen var mı?GCC C++ ve satır içi montaj kodu?

Bu da kolay görünmüyor:

__asm("command 1" 
     "command 2" 
     "command 3"); 
  1. Gerçekten her çizgisi etrafında bir doublequote koymak gerekiyor mu?
  2. Bunun bir MAJOR taraftarı olduğunu düşünen tek kişi ben miyim?

Ayrıca ... çok satırlı dize değişmezleri GCC'de çalışmadığından, bunu da aldatamam.

İlginiz için teşekkür ederiz. İyi günler.

cevap

8

Internet'te her zaman, bir kullanıcı \ t ve \ n yerine el ile bir sekme ve yeni satır eklemek için bazı örnekler buluyorum, ancak benim için çalışmaz. Pek senin örneğin bile derlemek emin .. ama bu böyle yapılır:

ÇOK çirkin yolu:

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

Veya bu bir az çirkin:

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

Teşekkür çiftleşmeye, yani daha fazla veya var Örneklerde gördüğümden daha azı, yine de, yine de sadece "daha az çirkin" oluyor! Motivasyonumu asmdan uzak tutuyorum. –