新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 利用C和匯編語言混合編程實現(xiàn)DSP軟件設(shè)計

利用C和匯編語言混合編程實現(xiàn)DSP軟件設(shè)計

作者: 時間:2012-08-29 來源:網(wǎng)絡(luò) 收藏

圖2給出了從CEVA-X1641 內(nèi)核FFT實現(xiàn)中摘取的匯編代碼例子。左邊第二行的add指令符合CEVA-X1641編譯器傳遞r0地址寄存器中指針參數(shù)的調(diào)用約定。右邊的pushd指令用于備份后面函數(shù)會用到的被調(diào)用方保存寄存器。


圖2:從CEVA-X1641 內(nèi)核的FFT實現(xiàn)中摘取的一段匯編代碼。

除了調(diào)用約定和寄存器使用約定外,一些編譯器在人工編寫的匯編代碼方面可能還會有一些額外的假設(shè)。這些假設(shè)通常是專門針對某個編譯器的,因此編譯器提供商會提供完善的資料和說明。

用于C和匯編連接的常用C語言擴(kuò)展

用于嵌入式平臺的大多數(shù)編譯器,特別是用于編程的編譯器,都具有豐富的C語言和連接功能。其中絕大部分功能不屬于標(biāo)準(zhǔn)C語言,因此被稱為C語言擴(kuò)展。下面列出的是其中有益于DSP編程的一些功能。

內(nèi)聯(lián)匯編(inline assembly):該功能可以幫助編程人員將匯編指令插入C代碼。

硬件寄存器綁定C變量:該功能經(jīng)常與匯編指令內(nèi)聯(lián)功能結(jié)合在一起,幫助內(nèi)聯(lián)匯編代碼訪問C語言級的變量(見圖3)。


圖3:結(jié)合內(nèi)聯(lián)匯編和硬件寄存器綁定功能的代碼示例。

存儲區(qū)屬性:該功能允許編程人員將上述變量和函數(shù)分配到獨特的用戶定義存儲區(qū),可以讓編程人員將C語言級單元分配到實際的存儲器位置,這對DSP應(yīng)用來說非常關(guān)鍵。

用戶定義的調(diào)用約定:在某些情況下,匯編函數(shù)可以通過用戶定義的調(diào)用約定取得更好的優(yōu)化效果。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉