2010-09-08 373 views
5

任何人都知道一個很好的方法來做到這一點?GCC C++和內聯彙編代碼?

這看起來並不友好:

__asm("command 1" 
     "command 2" 
     "command 3"); 
  1. 我真的要放雙引號周圍的每一個行?
  2. 我是唯一一個認爲這是主要partypooper的人嗎?

另外...因爲多行字符串文字不能在GCC中工作,我也無法作弊。

感謝您的關注。 祝您有愉快的一天。

回答

8

我總是在互聯網上找到一些例子,手動插入一個標籤和新行,而不是\ t和\ n,但它不適用於我。不是很肯定,如果你的榜樣,甚至編譯..但是這就是我要做的:

非常醜陋的方式:

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

或者這不太難看:

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

感謝隊友,這更多或少了我在例子中看到的,然而,它肯定還是「不那麼難看」!把我的動力從寫作asm。 – 2010-09-08 15:54:10