2012-12-07 30 views
0

衆所周知,asm()是一種將彙編代碼轉換爲c代碼的方式,但在某些資源中說「除非使用asm()的'long form',否則它會正確地向編譯器聲明C語言對彙編代碼的影響,讓你自己承擔不同編譯器版本,不同編譯標誌或對C代碼的微小變化可能產生災難性干擾的巨大風險。「我想知道什麼是asm()的「長形式」?什麼是asm()的「長形式」?

+1

它被稱爲[擴展裝配](http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html)。 – Mysticial

回答

5

「長形式」很可能是指GNU Extended Asm,用戶可以指定約束條件,輸入,輸出寄存器以及clobber列表來幫助優化編譯器進行寄存器分配。

3

所有使用嵌入式彙編代碼都受制於編譯器的具體細節。包括任何這樣的長表格。這種事情沒有標準。