版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、優(yōu)化級(jí)別說明(僅供參考):則其中的CodeOptimization欄就是用來設(shè)置C51的優(yōu)化級(jí)別。共有9個(gè)優(yōu)化級(jí)別(書上這么寫的),高優(yōu)化級(jí)別中包含了前面所有的優(yōu)化級(jí)別?,F(xiàn)將各個(gè)級(jí)別說明如下:0級(jí)優(yōu)化:1、常數(shù)折疊:只要有可能,編譯器就執(zhí)行將表達(dá)式化為常數(shù)數(shù)字的計(jì)算,其中包括運(yùn)行地址的計(jì)算。2、簡(jiǎn)單訪問優(yōu)化:對(duì)8051系統(tǒng)的內(nèi)部數(shù)據(jù)和位地址進(jìn)行訪問優(yōu)化。3、跳轉(zhuǎn)優(yōu)化:編譯器總是將跳轉(zhuǎn)延至最終目標(biāo)上,因此跳轉(zhuǎn)到跳轉(zhuǎn)之間的命令被刪除。級(jí)優(yōu)化:1、死碼消除:無用的代碼段被消除。2、跳轉(zhuǎn)否決:根據(jù)一個(gè)測(cè)試回溯,條件跳轉(zhuǎn)被仔細(xì)檢查,以決定是否能夠簡(jiǎn)化或刪除。級(jí)優(yōu)化:1、數(shù)據(jù)覆蓋:適于靜態(tài)覆蓋的數(shù)據(jù)和位段
2、被鑒別并標(biāo)記出來。連接定位器BL51通過對(duì)全局?jǐn)?shù)據(jù)流的分析,選擇可靜態(tài)覆蓋的段。級(jí)優(yōu)化:、“窺孔”優(yōu)化:將冗余的MOV命令去掉,包括不必要的從存儲(chǔ)器裝入對(duì)象及裝入常數(shù)的操作。另外如果能節(jié)省存儲(chǔ)空間或者程序執(zhí)行時(shí)間,復(fù)雜操作將由簡(jiǎn)單操作所代替。級(jí)優(yōu)化:1、寄存器變量:使自動(dòng)變量和函數(shù)參數(shù)盡可能位于工作寄存器中,只要有可能,將不為這些變量保留數(shù)據(jù)存儲(chǔ)器空間。2、擴(kuò)展訪問優(yōu)化:來自IDATA、XDATA、PDATA和CODE區(qū)域的變量直接包含在操作之中,因此大多數(shù)時(shí)候沒有必要將其裝入中間寄存器。3、局部公共子式消除:如果表達(dá)式中有一個(gè)重復(fù)執(zhí)行的計(jì)算,第一次計(jì)算的結(jié)果被保存,只要有可能,將被用作后續(xù)的
3、計(jì)算,因此可從代碼中消除繁雜的計(jì)算。4、CASE/SWITCH語句優(yōu)化:將CASE/SWITCH語句作為跳轉(zhuǎn)表或跳轉(zhuǎn)串優(yōu)化。級(jí)優(yōu)化:1、全局公共子式消除:只要有可能,函數(shù)內(nèi)部相同的子表達(dá)式只計(jì)算一次。中間結(jié)果存入一個(gè)寄存器以代替新的計(jì)算。2、簡(jiǎn)單循環(huán)優(yōu)化:以常量占據(jù)一段內(nèi)存的循環(huán)再運(yùn)行時(shí)被優(yōu)化。級(jí)優(yōu)化:1、回路循環(huán):如果程序代碼能更快更有效地執(zhí)行,程序回路將進(jìn)行循環(huán)。級(jí)優(yōu)化:1、擴(kuò)展入口優(yōu)化:在適合時(shí)對(duì)寄存器變量使用DPTR數(shù)據(jù)指針,指針和數(shù)組訪問被優(yōu)化以減小程序代碼和提高執(zhí)行速度。級(jí)優(yōu)化:1、公共尾部合并:對(duì)同一個(gè)函數(shù)有多處調(diào)用時(shí),一些設(shè)置代碼可被重復(fù)使用,從而減小程序代碼長(zhǎng)度。級(jí)優(yōu)化:1、
4、公共子程序塊:檢測(cè)重復(fù)使用的指令序列,并將它們轉(zhuǎn)換為子程序。C51甚至?xí)匦掳才糯a以獲得更多的重復(fù)使用指令序列。當(dāng)然,優(yōu)化級(jí)別并非越高越好,應(yīng)該根據(jù)具體要求適當(dāng)選擇。KeilC51的編譯器有一個(gè)優(yōu)化設(shè)置,不同的優(yōu)化設(shè)置,會(huì)產(chǎn)生不同的編譯結(jié)果。一般情況缺省編譯優(yōu)化設(shè)置被設(shè)定為8級(jí)優(yōu)化,實(shí)際最高可設(shè)定為9級(jí)優(yōu)化:Deadcodeelimination。Dataoverlaying。Peepholeoptimization。Registervariables。Commonsubexpressionelimination。Looprotation。ExtendedIndexAccessOptimiz
5、ing。ReuseCommonEntryCode。CommonBlockSubroutines。附表:KeilC51中的優(yōu)化級(jí)別及優(yōu)化作用級(jí)別說明0常數(shù)合并:編譯器預(yù)先計(jì)算結(jié)果,盡可能用常數(shù)代替表達(dá)式。包括運(yùn)行地址計(jì)算。優(yōu)化簡(jiǎn)單訪問:編譯器優(yōu)化訪問8051系統(tǒng)的內(nèi)部數(shù)據(jù)和位地址。跳轉(zhuǎn)優(yōu)化:編譯器總是擴(kuò)展跳轉(zhuǎn)到最終目標(biāo),多級(jí)跳轉(zhuǎn)指令被刪除。死代碼刪除:沒用的代碼段被刪除。拒絕跳轉(zhuǎn):嚴(yán)密的檢查條件跳轉(zhuǎn),以確定是否可以倒置測(cè)試邏輯來改進(jìn)或刪除。數(shù)據(jù)覆蓋:適合靜態(tài)覆蓋的數(shù)據(jù)和位段被確定,并內(nèi)部標(biāo)識(shí)。BL51連接/定位器可以通過全局?jǐn)?shù)據(jù)流分析,選擇可被覆蓋的段。窺孔優(yōu)化:清除多余的MOV指令。這包括不必
6、要的從存儲(chǔ)區(qū)加載和常數(shù)加載操作。當(dāng)存儲(chǔ)空間或執(zhí)行時(shí)間可節(jié)省時(shí),用簡(jiǎn)單操作代替復(fù)雜操作。寄存器變量:如有可能,自動(dòng)變量和函數(shù)參數(shù)分配到寄存器上。為這些變量保留的存儲(chǔ)區(qū)就省略了。優(yōu)化擴(kuò)展訪問:IDATA、XDATA、PDATA和CODE的變量直接包含在操作中。在多數(shù)時(shí)間沒必要使用中間寄存器。局部公共子表達(dá)式刪除:如果用一個(gè)表達(dá)式重復(fù)進(jìn)行相同的計(jì)算,則保存第一次計(jì)算結(jié)果,后面有可能就用這結(jié)果。多余的計(jì)算就被刪除。Case/Switch優(yōu)化:包含SWITCH和CASE的代碼優(yōu)化為跳轉(zhuǎn)表或跳轉(zhuǎn)隊(duì)列。全局公共子表達(dá)式刪除:一個(gè)函數(shù)內(nèi)相同的子表達(dá)式有可能就只計(jì)算一次。中間結(jié)果保存在寄存器中,在一個(gè)新的計(jì)算中
7、使用。簡(jiǎn)單循環(huán)優(yōu)化:用一個(gè)常數(shù)填充存儲(chǔ)區(qū)的循環(huán)程序被修改和優(yōu)化。循環(huán)優(yōu)化:如果結(jié)果程序代碼更快和有效則程序?qū)ρh(huán)進(jìn)行優(yōu)化。擴(kuò)展索引訪問優(yōu)化:適當(dāng)時(shí)對(duì)寄存器變量用DPTR。對(duì)指針和數(shù)組訪問進(jìn)行執(zhí)行速度和代碼大小優(yōu)化。公共尾部合并:當(dāng)一個(gè)函數(shù)有多個(gè)調(diào)用,一些設(shè)置代碼可以復(fù)用,因此減少程序大小。公共塊子程序:檢測(cè)循環(huán)指令序列,并轉(zhuǎn)換成子程序。Cx51甚至重排代碼以得到更大的循環(huán)序列。優(yōu)化論談到優(yōu)化,其實(shí)很多人都哭笑不得,因?yàn)樵谝粋€(gè)C51軟件工程師的生涯中,總要被KEIL的優(yōu)化耍那么一次到幾次。我被耍過,想必看著文章的你也被耍過,如果你回答說不,那只能說你寫的C51程序不多!看看KEILC的優(yōu)化級(jí)別選
8、項(xiàng)吧:0-9共10個(gè)級(jí)別的優(yōu)化,0是最低,9最高,一個(gè)普通的程序,設(shè)置最高級(jí)別和最低級(jí)別,編譯后代碼量有時(shí)會(huì)相差很遠(yuǎn),以DX板DEMO程序?yàn)槔?0級(jí)優(yōu)化后是14K的CODE,9級(jí)優(yōu)化后是10K的CODE,前后相差了4K??梢娺@個(gè)差別是多么的大。事實(shí)上我們不需要知道對(duì)應(yīng)的各個(gè)級(jí)另Keil會(huì)如何優(yōu)化你的程序或優(yōu)化了些什么,我們只需要以一種嚴(yán)謹(jǐn)?shù)膽B(tài)度去編寫和對(duì)待你的程序就可以了。在我個(gè)人的觀念中,程序在9級(jí)優(yōu)化后依然能保持完美無誤的運(yùn)行,你才算了解KEIL的脾氣。好了,還是說點(diǎn)正點(diǎn)的:有些人習(xí)慣整體程序都選擇同一個(gè)優(yōu)化級(jí),事實(shí)上每個(gè)C文件都可以有獨(dú)立的優(yōu)化級(jí)別的:在工作區(qū)右鍵選擇你的模塊(.C)然后
9、選取OptionsforFilexxx就會(huì)出現(xiàn)如下界面:在C51選項(xiàng)中就可以選擇優(yōu)化級(jí)別和警告級(jí)別等東西了,被獨(dú)立設(shè)置過的C文件會(huì)有特殊的標(biāo)記的:用以提醒你這個(gè)文件的編譯處理并非默認(rèn)設(shè)置!如果你覺得模塊優(yōu)化都不夠細(xì)的話,你可以考慮局部?jī)?yōu)化,也就是說對(duì)某個(gè)函數(shù)實(shí)行某個(gè)級(jí)別的優(yōu)化。當(dāng)你發(fā)現(xiàn)9級(jí)優(yōu)化的時(shí)候某個(gè)函數(shù)總是變的不正常,但你又希望其它函數(shù)和程序段保持最高的簡(jiǎn)潔度,那么局部?jī)?yōu)化可以說是相當(dāng)有用的了。在KEIL手冊(cè)中有介紹這個(gè)功能:#pragmaOPTIMIZE(x)x就是你希望的優(yōu)化級(jí)別,一般應(yīng)用如下:#pragmaOPTIMIZE(6)voidFunA()#pragmaOPTIMIZE(9)voidFunB()上面的意思就是說,在voidFunA()到voidFunB()之前的所有函數(shù),包括FunA在內(nèi),都采用6級(jí)的優(yōu)化,而從FunB開始直到之后,只要沒碰上#pragmaOPTIMIZE,都采用9級(jí)優(yōu)化了。OPTIMIZE還可以多一個(gè)參數(shù),就是speed和s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024學(xué)年九年級(jí)物理上冊(cè) 第8章 電磁相互作用及應(yīng)用 8.2磁場(chǎng)對(duì)電流的作用教學(xué)設(shè)計(jì) (新版)教科版
- 2024年嬰兒床安全性能檢測(cè)合同
- 2024年買賣合同誠(chéng)意金條款
- 2024年國(guó)際紡織品貿(mào)易合同
- 2024危險(xiǎn)品物流運(yùn)輸協(xié)議
- 2024年企業(yè)關(guān)于虛擬現(xiàn)實(shí)技術(shù)研發(fā)合同
- 2024年工程分包商勞務(wù)合同示范文本
- 2024年家庭農(nóng)場(chǎng)轉(zhuǎn)讓簡(jiǎn)單協(xié)議書
- 2024年國(guó)際環(huán)保技術(shù)與設(shè)備采購(gòu)合同
- 2024年品牌授權(quán)經(jīng)營(yíng)合同詳細(xì)條款
- 化學(xué)品安全技術(shù)說明書 MSDS(甲胺)
- 錨噴支護(hù)施工質(zhì)量驗(yàn)收評(píng)定表(2022版)
- 小學(xué)生心理健康教育課《身體紅綠燈》教案(公開課)
- JOINT VENTURE AGREEMENT合資企業(yè)協(xié)議(雙語版)
- 三元地理些子法
- 電梯保養(yǎng)年度作業(yè)計(jì)劃表格
- 醫(yī)院月考核指標(biāo)及評(píng)價(jià)辦法
- 監(jiān)理例會(huì)記錄表
- 阿米巴經(jīng)營(yíng)課件
- 二年級(jí)(上)音樂第四單元 單元分析
- 中國(guó)小學(xué)生生命教育調(diào)查問卷
評(píng)論
0/150
提交評(píng)論