2011-10-21 34 views

回答

4

C標準儲備'asm'供用戶用於任何目的。因此,GCC提供__asm__表示法以避免進入用戶的名稱空間(因爲以雙下劃線開頭的標識符是爲實現保留的)。

帶雙下劃線的符號很難理解,所以GCC提供了沒有雙下劃線的愉快的接口。但是,如果打開符合標準的編譯模式(例如-std=c99),則關閉asm選項。通過用雙下劃線符號書寫,它始終可用。

所以,asm比較容易閱讀,但__asm__符合C標準。

+1

標準是否保留「volatile」? –

+0

關鍵字'volatile'是無條件標準的一部分。相比之下,'asm'不是標準中的關鍵字,並且不在爲實現保留的名稱空間中。我不知道爲什麼'__volatile__'是'需要'或'使用'的;我以前沒有見過它用於彙編程序。由ipapadop引用的GCC Inline Assembly HOWTO顯示'asm'如何使用'volatile'。 –

0

GCC Inline Assembly HOWTO「你可能已經注意到,這裏我用asm__asm__。兩者都是有效的。如果關鍵字我們可以用__asm__asm衝突,在我們的節目什麼的。」