編譯器是如何工作的?

jobbole發表於2013-12-13

  解釋編譯器如何工作不是一件容易的事,最好的方法是用一個例項進行說明:

  編譯器是這樣一個電腦程式,它把用高階程式語言編寫的原始碼,轉化成低階語言。

  最基本地,一個編譯器由以下幾個階段組成:詞法分析、語法分析、語義分析、IR(中間程式碼,intermediate Representation)產生、IR優化、程式碼產生、最終優化。

mdsvnfdibb23454

  現在,看一個例子:

compiler-sample-program-300x124

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

  1.詞法分析

  把一個程式轉換成序列的符號。

vdsvbebeg545t

  2.語法分析

  恢復上面掃描得到的序列符號描述的結構。

syntax-analysis-300x249

  3.語義分析

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

syntax-analysis-300x249

  4.IR產生

ir-generation-300x102

  5.IR 優化

ir-optimization-300x98

  6.程式碼產生

code-generation-300x110

  7.最終優化

optimization-300x79

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

compilegfmhgm547r

  我仍然想自己做一個可以從頭到尾編譯一個簡單函式的小編譯器,我會做一些調研,並可能找到一種清晰展示的方法。

  譯者注:以上各個步驟介紹比較簡單,推薦閱讀這篇

  參考:1、史丹佛編譯器課程。2、龍書

  原文連結: programm creek   翻譯: 伯樂線上 - 乾龍

相關文章