DSP編程技巧之3:揭開編譯器神秘面紗之程序優(yōu)化
在二三十年前人們剛開始使用C語言代替匯編進(jìn)行開發(fā)的時(shí)候,因?yàn)楫?dāng)初的處理器/控制器性能很弱,而編譯器的能力也有限,所以形成了一些C語言編程效率不高的印象。但是今天的硬件性能已經(jīng)非常強(qiáng)大,而編譯器的能力也是日新月異,如果我們不熟練掌握匯編編程中的一些關(guān)鍵技術(shù),編寫的匯編代碼的效率已經(jīng)很難超過編譯器從C語言轉(zhuǎn)換出來的匯編代碼了。
本文引用地址:http://cafeforensic.com/article/203169.htm如果我們使用C語言進(jìn)行編程的話,編譯器除了可以把我們的加減乘除這樣的操作轉(zhuǎn)換為ADD、MPY以及相關(guān)的尋址、寄存器操作外,還可以在編譯產(chǎn)生匯編代碼的過程中進(jìn)行不同程度的優(yōu)化。優(yōu)化的過程要根據(jù)器件的特點(diǎn)與指令集等進(jìn)行有針對(duì)性的配置,所以在不同的器件上同一段C代碼優(yōu)化產(chǎn)生的結(jié)果可能不一樣,但是其基本思想都是一致的;甚至是不同公司的編譯器,在優(yōu)化選項(xiàng)和優(yōu)化效果上面也是基本一致的。在CCS軟件的編譯器中,我們可以使用的基本的優(yōu)化級(jí)別有5級(jí),如表1所示。需要注意的是,別名就是我們?cè)诰幾g器選項(xiàng)中實(shí)際使用的名字,因?yàn)樽煮w的原因,看起來可能會(huì)有混淆,以-O0為例,其中的第一個(gè)是字母O是大寫的字母0,表示優(yōu)化Optimization,而不是阿拉伯?dāng)?shù)字的0;第二個(gè)才是是阿拉伯?dāng)?shù)字中的零,用數(shù)字表示優(yōu)化的序號(hào)或者說優(yōu)化的程度。
c語言相關(guān)文章:c語言教程
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論