MDK中嵌入匯編方法


在MDK中編寫程序時C代碼不能滿足我們的需求,需要用到匯編,因此MDK支持C代碼中嵌入匯編的功能。

MDK支持兩種嵌入匯編的方法:內聯嵌入和匯編函數。這兩種嵌入匯編的方法均需要用到關鍵字__asm。

內聯嵌入方法:

void name(void)
{
    __asm{
           ;所嵌入的匯編代碼
    }       
}

這種嵌入方法支持直接訪問C代碼中的變量,同時編譯器會對此進行相應的優化。

該方法不能直接訪問CPU內部寄存器。

匯編函數方法:

__asm void name(void){
     ;所嵌入的匯編代碼  
}

這種嵌入方法不能直接訪問C代碼中的變量,並且函數的返回需自行實現,不過編譯器不會對所寫匯編代碼進行優化。

該方法可訪問CPU內部寄存器,可通過操作寄存器讀取傳入參數,輸出返回值。

示例:

內聯嵌入

unsigned long func_add(unsigned long a,unsigned long b)
{
        unsigned long c;
        __asm{
                   add c,a,b
        }    
        return c;  
}

匯編函數

__asm unsigned long func_add(unsigned long a,unsigned long b)
{
          add r0,r0,r1
          bx lr
}   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM