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