新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 利用C和匯編語言混合編程實現DSP軟件設計

        利用C和匯編語言混合編程實現DSP軟件設計

        作者: 時間:2012-08-29 來源:網絡 收藏

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


        圖2:從CEVA-X1641 內核的FFT實現中摘取的一段匯編代碼。

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

        用于C和匯編連接的常用C語言擴展

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

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

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


        圖3:結合內聯匯編和硬件寄存器綁定功能的代碼示例。

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

        用戶定義的調用約定:在某些情況下,匯編函數可以通過用戶定義的調用約定取得更好的優化效果。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 雅安市| 蕲春县| 南宁市| 田林县| 连平县| 麻栗坡县| 上杭县| 仁怀市| 高淳县| 荆门市| 乐业县| 亚东县| 正定县| 绥化市| 霞浦县| 临西县| 肥东县| 昭平县| 南丰县| 绥化市| 吴旗县| 广安市| 瓦房店市| 桑日县| 宁海县| 尖扎县| 桐柏县| 天津市| 洛宁县| 江安县| 西城区| 奉化市| 营山县| 堆龙德庆县| 九龙坡区| 白水县| 克拉玛依市| 句容市| 津市市| 岳池县| 钟祥市|