1. 程式人生 > >編譯原理-編譯程式基礎知識

編譯原理-編譯程式基礎知識

本文主要講的什麼是編譯程式,編譯的各個階段

什麼是編譯程式

源語言是像FORTRAN、Pascal或C那樣的高階語言,目標語言是像組合語言或機器語言那樣的低階語言,這種翻譯程式就叫做編譯程式

翻譯程式:就是把一種語言(稱為源語言)書寫的程式翻譯成另外一種語言(稱為目標語言)的等價程式。

一個編譯程式的輸入可能要由一個或多個預處理程式來產生

預處理:一個源程式可能分成幾個模組放在不同的檔案裡,將這些源程式彙集在一起的任務,由一個叫預處理程式的程式來完成,有些預處理程式也負責巨集展開、檔案合併等任務

編譯的各個階段

1、詞法分析:編譯過程的第一階段

任務:從左到右一個字元一個字元地讀入源程式,對構成源程式的字元流進行掃描和分解,從而識別出一個個單詞。

2、語法分析:編譯過程的第二階段

任務:在詞法分析的基礎上將單詞序列分解成各類語法短語,如“程式、語句、表示式”等;這種語法短語也稱為短語單位,可表示成語法樹。

例如: id1 := id2 + id3 * 10;
這裡寫圖片描述

這裡寫圖片描述

3、語義分析:編譯過程的第三個過程,審查源程式有無語義錯誤,為程式碼生成階段收集型別資訊。

4、中間程式碼生成(該過程不是必須的)

所謂中間程式碼 是一種結構簡單、含義明確的記號系統,這種記號系統可以設計成多種多樣的形式。
設計的原則:一是容易生成; 二是:容易將他翻譯成目的碼。

5、程式碼優化 (該過程不是必須的)

任務:對前一階段產生的中間程式碼進行變換或進行改造,目的是使生成的目的碼更為高效,即節省時間和省空間。

6、目的碼生成(編譯過程的最後階段)

任務:把中間程式碼變換成特定的機器上的絕對指令程式碼或可重定位的指令程式碼活彙編指令程式碼。它的工作與硬體系統結構和指令含義有關。

一個完整的編譯程式還必須包括表格管理和出錯處理程式。