新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Keil C51中的優化級別及優化作用

        Keil C51中的優化級別及優化作用

        作者: 時間:2016-11-26 來源:網絡 收藏
        級別說明

        0常數合并:編譯器預先計算結果,盡可能用常數代替表達式。包括運行地址計算。
        優化簡單訪問:編譯器優化訪問8051系統的內部數據和位地址。
        跳轉優化:編譯器總是擴展跳轉到最終目標,多級跳轉指令被刪除。

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


        1死代碼刪除:沒用的代碼段被刪除。
        拒絕跳轉:嚴密的檢查條件跳轉,以確定是否可以倒置測試邏輯來改進或刪除。


        2數據覆蓋:適合靜態覆蓋的數據和位段被確定,并內部標識。BL51連接/定位器可以通

        過全局數據流分,選擇可被覆蓋的段。


        3窺孔優化:清除多余的MOV指令。這包括不必要的從存儲區加載和常數加載操作。當存

        儲空間或執行時間可節省時,用簡單操作代替復雜操作。


        4寄存器變量:如有可能,自動變量和函數參數分配到寄存器上。為這些變量保留的存儲區就省略了。
        優化擴展訪問:IDATA、XDATA、PDATA和CODE的變量直接包含在操作中。在多數時間沒

        必要使用中間寄存器。
        局部公共子表達式刪除:如果用一個表達式重復進行相同的計算,則保存第一次計算

        結果,后面有可能就用這結果。多余的計算就被刪除。
        Case/Switch優化:包含SWITCH和CASE的代碼優化為跳轉表或跳轉隊列。


        5全局公共子表達式刪除:一個函數內相同的子表達式有可能就只計算一次。中間結果

        保存在寄存器中,在一個新的計算中使用。
        簡單循環優化:用一個常數填充存儲區的循環程序被修改和優化。


        6循環優化:如果結果程序代碼更快和有效則程序對循環進行優化。


        7擴展索引訪問優化:適當時對寄存器變量用DPTR。對指針和數組訪問進行執行速度和代碼大小優化。

        8公共尾部合并:當一個函數有多個調用,一些設置代碼可以復用,因此減少程序大小

        9公共塊子程序:檢測循環指令序列,并轉換成子程序。Cx51甚至重排代碼以得到更大的循環序列。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 永吉县| 广宗县| 嵊州市| 新竹县| 丹凤县| 黎川县| 吉木乃县| 西华县| 武定县| 宜兰市| 黄大仙区| 罗山县| 犍为县| 伊川县| 无棣县| 醴陵市| 武义县| 长治县| 无极县| 互助| 中宁县| 韶关市| 吉水县| 津南区| 南丹县| 广宗县| 泾阳县| 赣榆县| 应城市| 彰化县| 会同县| 吉木乃县| 云浮市| 庆阳市| 漠河县| 常宁市| 天等县| 稻城县| 马尔康县| 巴青县| 灵武市|