天天看點

編譯器是如何工作的?(轉)

轉自:http://www.kuqin.com/shuoit/20131215/337001.html

看到這篇文章概括的不錯,有助于從宏觀上了解編譯器的工作過程。感謝原創者。

解釋編譯器如何工作不是一件容易的事,最好的方法是用一個執行個體進行說明:編譯器是這樣一個電腦程式,它把用進階程式設計語言編寫的源代碼,轉化成低級語言。最基本的,一個編譯器由以下幾個階段組成:詞法分析、文法分析、語義分析、IR(中間代碼,intermediate Representation)産生、IR優化、代碼産生、最終優化。

編譯器是如何工作的?(轉)

現在,看一個例子:

編譯器是如何工作的?(轉)

以下就是各個步驟的詳細分析。

1.詞法分析

把一個程式轉換成串行的符号。

編譯器是如何工作的?(轉)

2.文法分析

恢複上面掃描得到的串行符号描述的結構。

編譯器是如何工作的?(轉)

3.語義分析

保證程式的定義是明确的。

編譯器是如何工作的?(轉)

4.IR産生

編譯器是如何工作的?(轉)

5.IR優化

編譯器是如何工作的?(轉)

6.代碼生成

編譯器是如何工作的?(轉)

7.最終優化

編譯器是如何工作的?(轉)

我在想,應該畫一個可以清晰地表達編譯器是如何工作的圖解。然而,我發現在《龍書》(譯注:《龍書》就是《編譯原理》(Compilers—Principles,TechniquesandTools),名字源于書的封皮有一條吐火的龍)的圖非常好,那就不需要自己動手了。

編譯器是如何工作的?(轉)

再次感謝原創者。

繼續閱讀