資料介紹
1. 小心使用匯編表達(dá)式
在C/C++代碼中,有時候一些操作難免會對某些CPU寄存器進(jìn)行操作,此時要使用內(nèi)嵌的匯編表達(dá)式,例如asm(“EALLOW”),或者重置某個中斷的掩碼寄存器等。在優(yōu)化代碼時,編譯器會重新調(diào)整某些代碼段的順序,自己決定使用某些寄存器(例如AR0-AR7這樣的輔助寄存器),甚至刪除某些編譯器認(rèn)為無用的變量、函數(shù)等,但是編譯器一般情況下并不會對內(nèi)嵌的匯編代碼進(jìn)行任何優(yōu)化(除非這段匯編代碼被編譯器認(rèn)為是永遠(yuǎn)不會執(zhí)行到的無用代碼),這就造成了編譯器的優(yōu)化效果在這段匯編代碼和它的上下文代碼中無法進(jìn)行有效的優(yōu)化,特別是匯編代碼和C/C++代碼直接存在變量調(diào)用的情況下。所以非必要的情況下,要盡量避免C/C++和匯編語句的混用,如果確實需要的,也要在編譯之后檢查生成的匯編代碼是不是保證了我們代碼原意的完整性。
2. 為必要的內(nèi)存存取使用volatile關(guān)鍵字
在C/C++代碼的編譯過程中,編譯器會分析數(shù)據(jù)流,從而盡量避免對存儲空間的直接存取。但是如果我們要在C/C++代碼中直接對內(nèi)存地址進(jìn)行操作的話,需要使用volatile關(guān)鍵字來定義變量,編譯器在優(yōu)化時不會對volatile類型的變量進(jìn)行優(yōu)化。
例如,在下面的代碼中,循環(huán)的結(jié)束條件為指針指向的地址為0xFF:
unsigned int *ctrl;
while (*ctrl !=0xFF);
因為*ctrl是一個不變的表達(dá)式,這個循環(huán)會被優(yōu)化為一次內(nèi)存讀取。為了正確實現(xiàn)我們的代碼意圖,需要把ctrl定義為volatile類型:
volatile unsigned int *ctrl
使用volatile類型定義的類型在調(diào)試的時候還有一個極大的優(yōu)勢,就是我們可以直接在CCS的debug窗口里改變變量的值,極大地方便我們的調(diào)試。
3. 小心使用Alias變量
Alias(別名)在一個變量可以被至少兩種方式存取的時候會用到,例如,當(dāng)兩個指針指向同一塊區(qū)域或?qū)ο髸r,我們稱一個指針 alias 另一個指針。Alias變量的使用要非常謹(jǐn)慎,因為會涉及到非直接的引用,從而破壞了優(yōu)化效果。編譯器在優(yōu)化時會分析代碼來決定在哪些地方會產(chǎn)生alias引用,然后在保持代碼正確性的基礎(chǔ)上“保守”地優(yōu)化代碼。
一般情況下,編譯器會假設(shè),如果一個本地變量的地址被傳遞給某個函數(shù),則這個函數(shù)有可能會通過指針操作改變這個本地變量的內(nèi)容,但是這個函數(shù)不能在該地址被返回后仍然可以被別的指針操作所示使用,例如把這個本地變量的地址分配給一個全局變量或者返回它。如果這種假設(shè)被打破,則需要在編譯器選項里使用-ma強(qiáng)制編譯器按照最壞情況的別名引用來進(jìn)行一定的優(yōu)化,在這種情況下,任何非直接的引用(例如使用指針)都可以引用到這個變量。
- 樊昌信《通信原理》真題解析及講義電子版 0次下載
- DSP載波移相控制C語言源代碼下載 56次下載
- 電工學(xué)知識要點與習(xí)題解析 56次下載
- 電子技術(shù)基礎(chǔ)模擬部分第五版課后習(xí)題解析資料免費下載 0次下載
- 解析MES的五大優(yōu)勢 6次下載
- DSP的編程指令全集詳細(xì)資料(免費下載) 8次下載
- DSP的C語言編程的詳細(xì)簡介和優(yōu)化改進(jìn)設(shè)計的詳細(xì)概述 8次下載
- TMS3C6000 DSP的五個最有效的優(yōu)化代碼詳細(xì)介紹 10次下載
- DSP匯編程序優(yōu)化方法的探討 5次下載
- DSP編程技巧之鏈接匯編代碼與C_C++代碼 7次下載
- DSP編程技巧之編譯流程與處理器選項 2次下載
- 電子設(shè)計競賽賽題解析 0次下載
- 風(fēng)力擺控制系統(tǒng)賽題解析 31次下載
- DSP環(huán)境下C語言的編程優(yōu)化 22次下載
- Visual C++面向?qū)ο笈c可視化程序設(shè)計習(xí)題解析與編程實 0次下載
- 計算機(jī)視覺的五大技術(shù) 871次閱讀
- 淺談代碼優(yōu)化與過度設(shè)計 445次閱讀
- 更快的tsv解析代碼分享 323次閱讀
- C語言內(nèi)存五大區(qū)詳解 832次閱讀
- 代碼如何優(yōu)化掉多余的if/else? 679次閱讀
- PLC的五大編程技術(shù)方法 5079次閱讀
- 五大方法分辨真假IC 8384次閱讀
- C和匯編代碼結(jié)合 是實現(xiàn)DSP軟件設(shè)計的最好方式 2723次閱讀
- 風(fēng)機(jī)類型中貫流風(fēng)機(jī)五大特征 9247次閱讀
- 電感器在電路中的五種作用解析 5.4w次閱讀
- 一文詳解單片機(jī)C程序及代碼的優(yōu)化 4770次閱讀
- Vivado Design Suite 2017.1的五大方法介紹 4591次閱讀
- 智能音箱工作原理是什么_智能音箱的五大功能 6.2w次閱讀
- 微流控芯片五大優(yōu)點及四大缺點分析 5.5w次閱讀
- 一文了解FPGA與DSP的區(qū)別、特點及用途 2.9w次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1489次下載 | 免費
- 2單片機(jī)典型實例介紹
- 18.19 MB | 91次下載 | 1 積分
- 3S7-200PLC編程實例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 9次下載 | 免費
- 6基于AT89C2051/4051單片機(jī)編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7基于單片機(jī)和 SG3525的程控開關(guān)電源設(shè)計
- 0.23 MB | 3次下載 | 免費
- 8基于單片機(jī)的紅外風(fēng)扇遙控
- 0.23 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30319次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關(guān)電源設(shè)計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多