<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    DSP編程技巧之3:揭開編譯器神秘面紗之程序優化

    發布時間:2014-9-1 14:57    發布者:看門狗
    關鍵詞: C語言 , 編譯器 , DSP , 存儲器
    作者:paradoxfx 來源:電子產品世界

      在二三十年前人們剛開始使用C語言代替匯編進行開發的時候,因為當初的處理器/控制器性能很弱,而編譯器的能力也有限,所以形成了一些C語言編程效率不高的印象。但是今天的硬件性能已經非常強大,而編譯器的能力也是日新月異,如果我們不熟練掌握匯編編程中的一些關鍵技術,編寫的匯編代碼的效率已經很難超過編譯器從C語言轉換出來的匯編代碼了。

      如果我們使用C語言進行編程的話,編譯器除了可以把我們的加減乘除這樣的操作轉換為ADD、MPY以及相關的尋址、寄存器操作外,還可以在編譯產生匯編代碼的過程中進行不同程度的優化。優化的過程要根據器件的特點與指令集等進行有針對性的配置,所以在不同的器件上同一段C代碼優化產生的結果可能不一樣,但是其基本思想都是一致的;甚至是不同公司的編譯器,在優化選項和優化效果上面也是基本一致的。在CCS軟件的編譯器中,我們可以使用的基本的優化級別有5級,如表1所示。需要注意的是,別名就是我們在編譯器選項中實際使用的名字,因為字體的原因,看起來可能會有混淆,以-O0為例,其中的第一個是字母O是大寫的字母0,表示優化Optimization,而不是阿拉伯數字的0;第二個才是是阿拉伯數字中的零,用數字表示優化的序號或者說優化的程度。






      根據需要,我們可以選擇需要的優化級別,例如可以選擇優化代碼的尺寸,從而減小代碼占用的存儲器空間;一般情況下使用-O2或者-O3可以實現在代碼運行速度、代碼占用的存儲器空間和編譯速度幾個因素之間的最優化。但是優化也是有一定的代價的,首先編譯的時間會隨著優化級別的提高而增加;其次如果我們的代碼不夠嚴謹,可能會產生意外的結果,例如某些看起來沒用的變量直接被編譯器給“忽視”了,但是我們本來保留它可能是有目的的,例如用來做為調試用的變量,結果它被優化掉了而失去了意義,這時我們就需要使用一些特殊的C語言關鍵字告訴編譯器,這個變量用在這里是有其它目的的,不能把它給優化掉,等等;這些以后可以詳解。

      關于優化的更多細節,大家可以參考一些有關高效編程的書,因為編譯器雖然可以對代碼進行優化,如果我們的代碼寫的太爛,編譯器估計也要吐血了。。。
    本文地址:http://www.portaltwn.com/thread-132450-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷