C/C++語言的編譯器操作概述
發布時間:2009/1/9 0:00:00 訪問次數:1039
1.集成的預處理器(integrated preprocessor)
c/c++的預處理器集成在分析器工具中,可以提高代碼的編譯速度。用戶可以只進行預處理也可以將預處理列表 保存在文件中。tms320x28xx的c/c++編譯器包含杯準的預處理功能,這些功能主要完成下列預處理任務:
●宏定義和擴展;
● #include 文件處理
●條件編譯處理;
●其他碩處理標識(在原代碼文件中以#字符開始的特定的代碼段)。
2.代碼優化
編譯器采用先進的優化技術對c/c++源代碼進行優化,如圖1所示,從而減小代碼的尺寸,提高代碼的效率和運行 速度。c28x優化器充分利用c28x的結構特點對其代碼進行優化,生成更高效率的代碼。優化器是位于分析器和代碼 產生器中間的優化工具,最簡單的方法就是使用clzooo—v2s shell程序,并通過-o選項確定優化級別。
圖1 帶有優化的編譯操作
優化器總計有4個優化級別,分別對應不同的優化程序。
(1) -o0
●簡化控制流圖(control flow graph);
●將變量分配到寄存器;
●完成循環旋轉(loop rotation);
●刪除未使用的代碼;
●簡化表達式和語句;
●內聯聲明未inline的函數。
(2) -o1
●完成所有00的優化操作;
●運行局部復制/常數傳遞;
●刪除未使用的賦值語句;
●刪除局部公共表達式(local common expression)。
(3) -o2
●完成所有-ol的優化操作;
●完成循環優化;
●刪除全局公共子表達式(global common expression);
●刪除全局未使用的賦值語句;
●如果使用o優化但不標注優化的級別,則系統默認為-o2優化。
(4)-o3
●完成所有-o2的優化操作;
●刪除未使用的函數;
●當函數的返回值沒有用到時,簡化函數的返回形式;
●內聯小的函數;
●記錄函數聲明以便當優化調用時知道調用函數的屬性;
●當所有調用都傳遞一個相同的參數時,把這個參數直接放在函數體中,不通過寄存器/存儲器的方式傳遞這個參數;
●識別文件級變量特性。
上述各級別的優化都是通過優化器來實現的,此外代碼生成器也要運行其他優化,尤其是和處理器相關的優化。而代碼生成器的優化操作總會被運行,與是否運行優化器沒有關系。
歡迎轉載,信息來源維庫電子市場網(www.dzsc.com)
1.集成的預處理器(integrated preprocessor)
c/c++的預處理器集成在分析器工具中,可以提高代碼的編譯速度。用戶可以只進行預處理也可以將預處理列表 保存在文件中。tms320x28xx的c/c++編譯器包含杯準的預處理功能,這些功能主要完成下列預處理任務:
●宏定義和擴展;
● #include 文件處理
●條件編譯處理;
●其他碩處理標識(在原代碼文件中以#字符開始的特定的代碼段)。
2.代碼優化
編譯器采用先進的優化技術對c/c++源代碼進行優化,如圖1所示,從而減小代碼的尺寸,提高代碼的效率和運行 速度。c28x優化器充分利用c28x的結構特點對其代碼進行優化,生成更高效率的代碼。優化器是位于分析器和代碼 產生器中間的優化工具,最簡單的方法就是使用clzooo—v2s shell程序,并通過-o選項確定優化級別。
圖1 帶有優化的編譯操作
優化器總計有4個優化級別,分別對應不同的優化程序。
(1) -o0
●簡化控制流圖(control flow graph);
●將變量分配到寄存器;
●完成循環旋轉(loop rotation);
●刪除未使用的代碼;
●簡化表達式和語句;
●內聯聲明未inline的函數。
(2) -o1
●完成所有00的優化操作;
●運行局部復制/常數傳遞;
●刪除未使用的賦值語句;
●刪除局部公共表達式(local common expression)。
(3) -o2
●完成所有-ol的優化操作;
●完成循環優化;
●刪除全局公共子表達式(global common expression);
●刪除全局未使用的賦值語句;
●如果使用o優化但不標注優化的級別,則系統默認為-o2優化。
(4)-o3
●完成所有-o2的優化操作;
●刪除未使用的函數;
●當函數的返回值沒有用到時,簡化函數的返回形式;
●內聯小的函數;
●記錄函數聲明以便當優化調用時知道調用函數的屬性;
●當所有調用都傳遞一個相同的參數時,把這個參數直接放在函數體中,不通過寄存器/存儲器的方式傳遞這個參數;
●識別文件級變量特性。
上述各級別的優化都是通過優化器來實現的,此外代碼生成器也要運行其他優化,尤其是和處理器相關的優化。而代碼生成器的優化操作總會被運行,與是否運行優化器沒有關系。
歡迎轉載,信息來源維庫電子市場網(www.dzsc.com)
上一篇:C/C++編譯器工具的主要特點
上一篇:C/C++語言的編譯器接□