編譯器分析

depen depen selection

簡介

問題一

編譯器分析(compiler analysis)的對象是前端生成並傳遞過來的中間代碼,現代的最佳化型編譯器(optimizing compiler)常常用好幾種層次的中間代碼來表示程式,高層的中間代碼(high level Ir)接近輸入的源程式的格式,與輸入語言相關(language dependent),包含更多的全局性的信息,和源程式的結構;中層的中間代碼(middle level IR)與輸入語言無關,低層的中間代碼(Low level IR)與機器語言類似。 不同的分析,最佳化發生在最適合的那一層中間代碼上。

問題二

常見的編譯分析有函式調用樹(call tree),控制流程圖(Control flow graph),以及在此基礎上的 變數定義-使用,使用-定義鏈(define-use/use-define or u-d/d-u chain),變數別名分析(alias analysis),指針分析(pointer analysis),數據依賴分析(data dependence analysis)等。

延伸

機器代碼的生成是最佳化變型後的中間代碼轉換成機器指令的過程。現代編譯器主要採用生成彙編代碼(assembly code)的策略,而不直接生成二進制的目標代碼(binary object code)。即使在代碼生成階段,高級編譯器仍然要做很多分析,最佳化,變形的工作。例如如何分配暫存器(register allocatioin),如何選擇合適的機器指令(instruction selection),如何合併幾句代碼成一句等等。

相關詞條

熱門詞條

聯絡我們