Python Firefox wordpress 程序员 java linux Ubuntu 云计算 nginx 编程 mysql shell 微软 centos 开源 apache google Android Windows php

编译源代码的常见类型

 編譯器是把人書寫的高級程序代碼編譯成目標程序的語言處理程序,編譯用的程序也可以稱為編譯系統。

 一個編譯系統把一個源撤你更新編譯成目標程序的工作過程分為5個階段,詞法分析,語法分析,中間代碼分析,代碼優化和目標代碼生成。其中主要階段是詞法分析和語法分析也可以稱為源代碼分析,分析過程中發現有語法錯誤,就給提示信息。

 詞法分析就是處理源代碼中的單詞,詞法分析程序按照從左到右的順序依次掃碼源代碼,生成單詞對應的符號,把字符描述的程序轉換為符號描述的中間程序,詞法分析程序也可以稱為詞法掃描器。詞法分析過程可以用收工構造和自動生成兩種方法。收工構造可以使用狀態圖,自動生成的構造方法通常使用確定步驟的程序狀態機。

 語法分析程序使用的分析程序的結果作為輸入,語法分析的功能就是分析單詞符號是否符合語法要求,如表達式,賦值,循環等是否構成語法要求。此外,語法分析程序還按照語法規則分析檢查程序的語句是否符合合理正確的邏輯結構。

 語法分析有自上而下分析和自下而上的分析兩種方法,自上而下分析方法從文法開始的符號向下推導,逐步分析,自下而上分析方法利用堆棧的原理。把詞法符號按順序入棧,然後分析語法是否符合要求。

 中間代碼也叫做中間語言,是一種介於源代碼與目標代碼之間的表示方式,使用中間程序可以完整的表達源代碼的意思,同時又是編譯程序在邏輯結構上簡單明確。中間語言是共編譯器使用的。常見的表示形勢有波蘭幾號,四元式,三元式和樹等。

 代碼優化的目的是生成有效的目標代碼,代碼優化通過中間代碼的分析,進行等價變換,達到減小存儲空間和縮短運行時間的目的。程序優化並不改變源代碼程序的功能。代碼優化還可以對目標代碼進行優化,與中間代碼優化相比,對目標代碼優化依賴計算機類型。但是優化的效果相對比較好。

延伸阅读

    评论