久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

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

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

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

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

本文引用地址:http://cqxgywz.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甚至重排代碼以得到更大的循環序列。



評論


技術專區

關閉