gcc各種優化所在位置及迴圈展開分析

2021-09-29 18:30:24 字數 920 閱讀 7804

generic 是一種樹(tree)的高階表示形式,目的是提供乙個語言無關的中間表示。

當前 gcc 的主要優化都是基於 gimple 表示形式實現的,包括過程間優化、傳統標量優化、迴圈優化、向量化等。

gcc 的 all_passes 遍表中的 expand 過程將 gcc 的 gimple 表示形式轉化為另外一種表示形式 rtl。

rtl 相當於一種面向帶有無限數量暫存器的抽象機器的組合語言,能夠表示很多低階特徵,例如暫存器、儲存定址模式、字大小型別、比較-分支指令、呼叫約定、位域操作、型別轉換等。在 rtl 表示形式上實現的優化包括暫存器分配、指令排程、軟流水、迴圈優化等。

gcc 對編譯遍進行了分類,按處理級別可分為 ipa 遍、gimple 遍和 rtl 遍。ipa 遍主要包括過程間優化,可以使用程式全域性資訊;gimple 遍與 rtl 遍屬於過程內優化,只能使用函式內的區域性資訊,gimple 遍處理的物件處於 gimple中間表示形式,而 rtl 遍處理的物件處於 rtl 中間表示形式。

迴圈展開

一種優化也可能在多個編譯遍中實現。迴圈展開優化技術在三 個 編 譯 遍 中 實 現 : pass_complete_unrolli 、 pass_complete_unroll 和pass_rtl_unroll_and_peel_loops,前兩個優化遍是 gimple 遍,處理 gimple 中間表示**,最後乙個優化遍是 rtl 遍,處理 rtl 中間表示代。兩個 gimple迴圈展開遍的功能相同,都是對迴圈進行完全展開,即展開次數等於迴圈迭代次數;

rtl 迴圈展開遍則是包含了迴圈展開優化和迴圈剝皮優化。

ionic 獲取手機所在位置

之前專案中需要使用到定位功能,前邊的文章提到的座標位置是有問題的,是國際座標,國內的環境使用google地圖會出現問題,所以需要使用國內的地圖進行座標解析,因為國內和國外的座標體系不一致,需要通過轉換才能使用 具體原因請到網上自由查詢 1.先需要安裝外掛程式,在專案的根目錄下執行命令 cordova...

定位段錯誤所在位置

執行緒建立需要使用prctl函式來指明執行緒名字,此名字將會在段錯誤時顯示出來 沒有了,好像 proc task yyy status 程序號,yyy 執行緒號,task 執行緒目錄,status 狀態檔案 status 檔案下有sigblk標誌,當然也有其它的,但這個作用於段錯誤說明。sigblk...

VC獲取滑鼠所在位置視窗

編號 a3gs tv20100122003 描述 本文以例項 的形式講述了在 vc中下實現滑鼠所在位置視窗的獲取。例子 技術實現 標頭檔案 include winuser.h 技術說明 實現本功能主要就是乙個 windowfrompoint 系統api 的呼叫,本 api的詳細資訊請參見 msdn ...