ARM內聯彙編

首先,讓我們來共同瞭解一下 GCC 內聯彙編的一般格式:
asm(
代碼列表
: 輸出運算符列表
: 輸入運算符列表
: 被更改資源列表
);

在代碼列表中,每個彙編語句都要用"  "括起來。

例:
asm(
" add %0,%1,%2\n\t"
" mov r1,%1\n\t"
:"+r"(sum)
:"r"(a),"r"(b)
:"r0"
);

說明:
       
 在 C 代碼中嵌入彙編需要使用 asm 關鍵字,用法asm();
        "  "      引號內部包含的部分是指令部分
                   參數輸出部分  函數的返回值
        :            參數輸入部分  函數的形參
        :            修飾列表          內聯彙編的聲明部分,要被更改的資源

1.
        "r"     用寄存器來保存參數
        "i"     是立即數
        "m"   一個有效的內存地址
        "x"    只能做輸入

        +  :     表示參數的可讀可寫
        無:    表示參數只讀
        =  :     表示只寫
        & :     只能做輸出

2. 
    %0  輸出列表和輸入列表的第1個成員
    %1  輸出列表和輸入列表的第2個成員
    %2  輸出列表和輸入列表的第3個成員
   ...  依次類推

3. 冒號部分可以省略,要省略全部省略,否則全部寫上

















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