概述
編譯的目的是把人書寫的高階語言**翻譯成目標程式的語言處理程式,編譯用的程式(例如gcc)稱為編譯系統。
乙個編譯系統把乙個源程式翻譯成目標程式的工作過程分為5個階段:詞法分析、語法分析、中間**生成、**優化和目標**生成。
其中主要階段是詞法分析和語法分析,也可以稱為源**分析,分析過程中發現有語法錯誤,給出提示資訊。
詞法分析
詞法分析的目的是處理源**中的單詞。
詞法分析程式按照從左到右的順序wyuq 掃瞄源**,生成單詞對應的符號,把字元描述的程式轉換為符號描述的中間程式。
詞法分析程式也稱做詞法掃瞄器。
詞法分析過程可以用手工構造和自動生成兩種方法。手工構造可以使用狀態圖,自動生成的構造方法通常使用確定步驟的程式狀態機。
語法分析
語法分析程式使用詞法分析程式的結果作為輸入。
語法分析的功能是分析單詞符號是否符合語法要求,如表示式、賦值、迴圈等是否構成語法要求。此外,語法程式還按照語法規則分析檢查程式的語句是否符合合理正確的邏輯結構。
語法分析方法有自上而下和自下而上分析兩種方法。
自上而下分析方法從方法開始的符號向下推導,逐步分析。自下而上分析方法利用堆疊的原理,把詞法符號按順序入棧,然後分析語法是否符合要求。
中間**生成
中間**也稱做中間語言,是一種介於源**與目標**之間的表示方式。
使用中間程式可以完整地表達源**的意思,同時又使編譯程式在邏輯結構上簡單明確。
中間語言是供編譯器使用的,常見的表示形式有逆波蘭幾號、四元式、三元式和樹等。
**優化
**優化是目標是生成有效的目標**。
**優化通過對中間**的分析,進行等價變換,達到減小儲存空間和縮短執行時間的目的。
程式優化並不改變源**的功能。
**優化還可以對目標**進行優化,與中間**優化相比,對目標**優化依賴計算機型別,但是優化的效果相對較好。
目標**生成
編譯程式的最後一項任務是生成目標**。
目標**生成器把中間**變換成目標**,通常有3種變換形式:
生成目標**需要考慮3個影響生成速度的問題:
C C 程式如何來,編譯全過程
概述 編譯的目的是把人書寫的高階語言 翻譯成目標程式的語言處理程式,編譯用的程式 例如gcc 稱為編譯系統。乙個編譯系統把乙個源程式翻譯成目標程式的工作過程分為5個階段 詞法分析 語法分析 中間 生成 優化和目標 生成。其中主要階段是詞法分析和語法分析,也可以稱為源 分析,分析過程中發現有語法錯誤,...
kinfu 編譯全過程
參考了很多網上編譯kinfu的教程,由於我同時裝了vs2012和vs2010,編譯的時候會出現the c compiler c program files microsoft visual studio 10.0 vc bin cl.exe is not able to compile a test...
編譯openwrt全過程
編譯openwrt全過程 本文 本教程的編譯環境 win7 專業版 vmwareworkstation6.5虛擬機器 ylmf os 3.0 編譯的過程中要保持電腦聯網 搭建編譯環境 應用程式 附件 終端 sudo apt get update 更新 安裝編譯需要的元件 sudo apt get i...