TMS320C5535 DSP混合編程詳解

TMS320C5535 DSP混合編程詳解

1.混合編程簡介

在DSP開發過程中,特別是開發的是第一次接觸的DSP芯片的時候,開發人員通常會使用C語言來進行開發工作。當發現算法不能滿足系統的時間要求時,就需要對代碼進行優化,一種方法是使用DSPLIB庫中優化過的函數來提高算法效率,另外一種方法就是將程序中耗時的算法用匯編語言實現,然後在C語言中調用,即本文介紹的混合編程。 對運算時間要求不高的部分使用C語言來實現,對運算速度較高的部分使用匯編語言來實現。

混合編程的關鍵在於C語言和彙編語言的接口,即如何在一種語言裏面使用另外一種語言中的函數、變量和函數返回值。考慮到DSP開發使用的較多的是C語言,那下面就主要討論如何在C語言中調用匯編函數。

2.混合編程具體方法

注:DSP平臺開發環境爲CCS5.4


(1)彙編函數的格式

首先新建一個.asm文件,具體格式如下圖所示,以函數void myflip(Int32 *,Int32 *)爲例說明。

注:關鍵字.global前面有一個空格

(2)彙編函數參數和返回值

C程序中傳入彙編函數中的參數,以及從彙編函數中返回到C程序中的值都是存放在特定的寄存器中的,要分別滿足下表中的寄存器規則和返回值規則。


寄存器規則


返回值規則



下面舉例說明寄存器規則和返回值規則的含義: 例如在C程序中調用匯編函數“int func1(int a)”,這是一個簡單的函數,一個int形參數和int型的返回值。根據寄存器規則可知int型參數存放在寄存器T0中,然後根據返回值規則第二行可知,返回值也是存於T0寄存器中。同理,如果調用“int func2(int a,long b,int*p)”,則傳入的實參會分別存於寄存器T0,AC0和AR0中,返回值則存於T0中。


(3)彙編函數調用方法

將彙編函數按照上述的規則寫好之後,然後在C程序中進行聲明,然後就可以直接調用匯編函數了。

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