如何在C代碼中使用內聯彙編之基本的asm

基本的asm-----沒有操作數的彙編指令
基本的asm語句語法格式:
asm asm-qualifiers ( AssemblerInstructions )

asm關鍵字是一個GNU擴展。
當使用-ansi和各種-std選線編譯代碼時,使用關鍵字__asm__而不是使用asm。

asm限定符(asm-qualifiers):
volatile:
可選的volatile限定符不起作用。
所有基本的asm塊都是隱式的volatile
inline:
如果使用inline限定符,那麼出於內聯的目的,asm語句的大小要儘可能的小。

參數(AssemblerInstructions):
這是一個指定彙編程序代碼的文本字符串。
字符串可以包含彙編程序識別的任何指令,包括指示符。
GCC本身不解析彙編程序指令,也不知道它們是什麼意思,甚至不知道它們是否是有效的彙編程序輸入。

可以將多個彙編程序指令放在一個asm字符串中,由系統彙編代碼中通常使用的字符分隔,如分號";“或”\n\t"等
在大多數地方都可以使用的組合是換行符和製表符(寫爲’ \n\t ')。
有些彙編程序允許分號(;)作爲行分隔符。但是,請注意,一些彙編語言使用分號來表示註釋的開始。

必須使用基本的asm語句的兩種情況:
在函數之外使用內聯彙編
擴展的asm語句必須在C函數中。
所以要在文件作用域內(“頂級”)編寫內聯彙編語言,必須在C函數之外使用基本的asm。
可以使用此技術發出彙編器指令,定義可以在文件的其他地方調用的彙編語言宏,或者用彙編語言編寫整個函數。
函數外的基本asm語句可能不使用任何限定符。
使用naked屬性聲明的函數也要求的是基本的asm。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章