C/C++語言的編譯器操作概述
發(fā)布時間:2009/1/9 0:00:00 訪問次數(shù):1057
1.集成的預(yù)處理器(integrated preprocessor)
c/c++的預(yù)處理器集成在分析器工具中,可以提高代碼的編譯速度。用戶可以只進行預(yù)處理也可以將預(yù)處理列表 保存在文件中。tms320x28xx的c/c++編譯器包含杯準(zhǔn)的預(yù)處理功能,這些功能主要完成下列預(yù)處理任務(wù):
●宏定義和擴展;
● #include 文件處理
●條件編譯處理;
●其他碩處理標(biāo)識(在原代碼文件中以#字符開始的特定的代碼段)。
2.代碼優(yōu)化
編譯器采用先進的優(yōu)化技術(shù)對c/c++源代碼進行優(yōu)化,如圖1所示,從而減小代碼的尺寸,提高代碼的效率和運行 速度。c28x優(yōu)化器充分利用c28x的結(jié)構(gòu)特點對其代碼進行優(yōu)化,生成更高效率的代碼。優(yōu)化器是位于分析器和代碼 產(chǎn)生器中間的優(yōu)化工具,最簡單的方法就是使用clzooo—v2s shell程序,并通過-o選項確定優(yōu)化級別。
圖1 帶有優(yōu)化的編譯操作
優(yōu)化器總計有4個優(yōu)化級別,分別對應(yīng)不同的優(yōu)化程序。
。1) -o0
●簡化控制流圖(control flow graph);
●將變量分配到寄存器;
●完成循環(huán)旋轉(zhuǎn)(loop rotation);
●刪除未使用的代碼;
●簡化表達(dá)式和語句;
●內(nèi)聯(lián)聲明未inline的函數(shù)。
。2) -o1
●完成所有00的優(yōu)化操作;
●運行局部復(fù)制/常數(shù)傳遞;
●刪除未使用的賦值語句;
●刪除局部公共表達(dá)式(local common expression)。
。3) -o2
●完成所有-ol的優(yōu)化操作;
●完成循環(huán)優(yōu)化;
●刪除全局公共子表達(dá)式(global common expression);
●刪除全局未使用的賦值語句;
●如果使用o優(yōu)化但不標(biāo)注優(yōu)化的級別,則系統(tǒng)默認(rèn)為-o2優(yōu)化。
。4)-o3
●完成所有-o2的優(yōu)化操作;
●刪除未使用的函數(shù);
●當(dāng)函數(shù)的返回值沒有用到時,簡化函數(shù)的返回形式;
●內(nèi)聯(lián)小的函數(shù);
●記錄函數(shù)聲明以便當(dāng)優(yōu)化調(diào)用時知道調(diào)用函數(shù)的屬性;
●當(dāng)所有調(diào)用都傳遞一個相同的參數(shù)時,把這個參數(shù)直接放在函數(shù)體中,不通過寄存器/存儲器的方式傳遞這個參數(shù);
●識別文件級變量特性。
上述各級別的優(yōu)化都是通過優(yōu)化器來實現(xiàn)的,此外代碼生成器也要運行其他優(yōu)化,尤其是和處理器相關(guān)的優(yōu)化。而代碼生成器的優(yōu)化操作總會被運行,與是否運行優(yōu)化器沒有關(guān)系。
歡迎轉(zhuǎn)載,信息來源維庫電子市場網(wǎng)(www.dzsc.com)
1.集成的預(yù)處理器(integrated preprocessor)
c/c++的預(yù)處理器集成在分析器工具中,可以提高代碼的編譯速度。用戶可以只進行預(yù)處理也可以將預(yù)處理列表 保存在文件中。tms320x28xx的c/c++編譯器包含杯準(zhǔn)的預(yù)處理功能,這些功能主要完成下列預(yù)處理任務(wù):
●宏定義和擴展;
● #include 文件處理
●條件編譯處理;
●其他碩處理標(biāo)識(在原代碼文件中以#字符開始的特定的代碼段)。
2.代碼優(yōu)化
編譯器采用先進的優(yōu)化技術(shù)對c/c++源代碼進行優(yōu)化,如圖1所示,從而減小代碼的尺寸,提高代碼的效率和運行 速度。c28x優(yōu)化器充分利用c28x的結(jié)構(gòu)特點對其代碼進行優(yōu)化,生成更高效率的代碼。優(yōu)化器是位于分析器和代碼 產(chǎn)生器中間的優(yōu)化工具,最簡單的方法就是使用clzooo—v2s shell程序,并通過-o選項確定優(yōu)化級別。
圖1 帶有優(yōu)化的編譯操作
優(yōu)化器總計有4個優(yōu)化級別,分別對應(yīng)不同的優(yōu)化程序。
(1) -o0
●簡化控制流圖(control flow graph);
●將變量分配到寄存器;
●完成循環(huán)旋轉(zhuǎn)(loop rotation);
●刪除未使用的代碼;
●簡化表達(dá)式和語句;
●內(nèi)聯(lián)聲明未inline的函數(shù)。
。2) -o1
●完成所有00的優(yōu)化操作;
●運行局部復(fù)制/常數(shù)傳遞;
●刪除未使用的賦值語句;
●刪除局部公共表達(dá)式(local common expression)。
。3) -o2
●完成所有-ol的優(yōu)化操作;
●完成循環(huán)優(yōu)化;
●刪除全局公共子表達(dá)式(global common expression);
●刪除全局未使用的賦值語句;
●如果使用o優(yōu)化但不標(biāo)注優(yōu)化的級別,則系統(tǒng)默認(rèn)為-o2優(yōu)化。
(4)-o3
●完成所有-o2的優(yōu)化操作;
●刪除未使用的函數(shù);
●當(dāng)函數(shù)的返回值沒有用到時,簡化函數(shù)的返回形式;
●內(nèi)聯(lián)小的函數(shù);
●記錄函數(shù)聲明以便當(dāng)優(yōu)化調(diào)用時知道調(diào)用函數(shù)的屬性;
●當(dāng)所有調(diào)用都傳遞一個相同的參數(shù)時,把這個參數(shù)直接放在函數(shù)體中,不通過寄存器/存儲器的方式傳遞這個參數(shù);
●識別文件級變量特性。
上述各級別的優(yōu)化都是通過優(yōu)化器來實現(xiàn)的,此外代碼生成器也要運行其他優(yōu)化,尤其是和處理器相關(guān)的優(yōu)化。而代碼生成器的優(yōu)化操作總會被運行,與是否運行優(yōu)化器沒有關(guān)系。
歡迎轉(zhuǎn)載,信息來源維庫電子市場網(wǎng)(www.dzsc.com)
上一篇:C/C++編譯器工具的主要特點
上一篇:C/C++語言的編譯器接□
熱門點擊
- C/C++語言的編譯器接□
- 在c/c++代碼中嵌入?yún)R編指令
- 匯編語言程序中的字符串表達(dá)式及運算符
- 匯編語言程序中常用的符號
- 從匯編程序中訪問C程序變量
- 匯編語言程序中的邏輯表達(dá)式及運算符
- ARM C/C++編譯器
- C/C++語言的編譯器操作概述
- 匯編程序、c/c++程序間的相互調(diào)用
- 匯編語言程序中的數(shù)字表達(dá)式及運算符
推薦技術(shù)資料
- 聲道前級設(shè)計特點
- 與通常的Hi-Fi前級不同,EP9307-CRZ這臺分... [詳細(xì)]
- AMOLED顯示驅(qū)動芯片關(guān)鍵技
- CMOS圖像傳感器技術(shù)參數(shù)設(shè)計
- GB300 超級芯片應(yīng)用需求分
- 4NP 工藝NVIDIA Bl
- GB300 芯片、NVL72
- 首個最新高端芯片人工智能服務(wù)器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究