我正在使用Apple的llvm-gcc編譯一些內聯彙編代碼。我寫了我希望它做的事,但它添加了不斷寫入變量的無關命令。爲什麼它這樣做,我該如何阻止它?爲什麼GCC添加彙編命令到我的內聯彙編?
實施例:
__asm__{
mov r11, [rax]
and r11, 0xff
cmp r11, '\0'
}
變(在 「組件」 助理視圖):
mov 0(%rax), %r11 // correct
movq %r11, -104(%rbp) // no, GCC, obviously wrong
and $255, %r11
movq %r11, -104(%rbp)
cmp $0, %r11
乾杯。
您是否嘗試過使用[擴展asm語法](http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#s5)設置適當的輸入,輸出和clobber列表? –
@亞當,這是我最好的猜測......今天我會嘗試。我是否必須切換到'asm(「cmd1 \ n \ t」「cmd2」:...:...:...)樣式,或者是否有方法將分隔符添加到花括號表示中? –
我不知道是否有方法使用大括號表示法來添加這些說明符;它不應該太難轉換爲使用帶引號的字符串。 –