新聞中心

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

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

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

        眾所周知,具有更高的性能優勢,而用C語言編碼則能更容易和快速地實現。處理器功能的不斷增強以及編譯器優化技術的提高,使得傳統的用編寫應用程序的做法逐漸被淘汰。現在的應用程序幾乎都是由C代碼和匯編代碼混合組成的。在那些對性能起決定性作用的關鍵功能中,DSP工程師將繼續使用高度優化的匯編代碼,同時轉用C語言編寫那些不太關鍵的功能,這將有利于代碼維護和移植。而C和匯編代碼的這種結合要求DSP工程師具備專門的工具和方法。

        本文引用地址:http://www.104case.com/article/189988.htm

        正確混合C代碼和匯編代碼

        問題是在哪里劃分C代碼和匯編代碼的界限。這取決于跟蹤器(profiler)所能提供的性能分析結果。然而在使用跟蹤器之前,DSP工程師需要為應用程序定義清晰的目標,這些目標一般包括循環數、代碼規模和數據量。目標一旦確定后,應該先全部用C語言編寫和創建應用程序,然后才使用跟蹤器來分析性能。

        在某些特定情況下,主要是控制應用中,C語言級的編碼就足夠了。但在大多數情況下,初始編寫的C語言應用程序是不能滿足一個或更多目標要求的。這通常意味著多少需要一些匯編代碼。在求助于匯編編程之前,強烈建議保存原始的C代碼。這樣不僅方便調試,而且當條件成熟(比如采用更強大的平臺),還可以返回到這些C語言的實現。

        匯編部分代碼應盡可能少。為此,工程師需要認真分析跟蹤器提供的性能結果,并確定應用程序中的關鍵函數。關鍵函數是指占用大部分執行時間,而必須用重寫才能滿足性能目標的那些函數。重寫其中的幾個關鍵函數后,需要重新進行性能分析。如果仍達不到目標要求,那就應該確定其它關鍵函數,再進行重寫。圖1顯示了利用專用硬件機制獲得高度優化的匯編代碼。


        圖1:用C語言創建的循環緩沖器代碼(左)以及由CEVA-teakLite-III創建的等效匯編代碼(右)。

        對編譯器的考慮事項

        在編寫需要與C代碼結合的匯編代碼時,匯編編程人員必須了解編譯器的約定和假設。匯編編程人員還必須了解編譯器的寄存器使用約定。通常,寄存器使用約定將硬件寄存器分成被調用方保存(或調用方使用)和被調用方使用(或調用方保存)寄存器。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 曲阳县| 朔州市| 滁州市| 五华县| 靖江市| 汝城县| 凤庆县| 麻江县| 武功县| 桑植县| 扬州市| 佛学| 韩城市| 孝感市| 正镶白旗| 黄骅市| 阳山县| 乌拉特后旗| 朔州市| 罗田县| 孟州市| 卢龙县| 昌邑市| 蓝田县| 河曲县| 沙洋县| 武穴市| 马关县| 冕宁县| 商都县| 和顺县| 孙吴县| 阿荣旗| 杭锦旗| 三河市| 舞阳县| 奉化市| 泗洪县| 鄂托克旗| 正蓝旗| 马龙县|