1.集成的預(yù)處理器(Integrated Preprocessor)
C/C++的預(yù)處理器集成在分析器工具中,可以提高代碼的編譯速度。用戶可以只進行預(yù)處理也可以將預(yù)處理列表 保存在文件中。TMS320X28xx的C/C++編譯器包含杯準的預(yù)處理功能,這些功能主要完成下列預(yù)處理任務(wù):
●宏定義和擴展;
● #include 文件處理
●條件編譯處理;
●其他碩處理標識(在原代碼文件中以#字符開始的特定的代碼段)。
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);
●刪除未使用的代碼;
●簡化表達式和語句;
●內(nèi)聯(lián)聲明未inline的函數(shù)。
(2) -o1
●完成所有00的優(yōu)化操作;
●運行局部復(fù)制/常數(shù)傳遞;
●刪除未使用的賦值語句;
●刪除局部公共表達式(Local Common Expression)。
(3) -o2
●完成所有-ol的優(yōu)化操作;
●完成循環(huán)優(yōu)化;
●刪除全局公共子表達式(Global Common Expression);
●刪除全局未使用的賦值語句;
●如果使用o優(yōu)化但不標注優(yōu)化的級別,則系統(tǒng)默認為-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)
來源:ks990次