時(shí)間:2019-08-26 14:34:35 作者:Bill 瀏覽量:44
編譯程序教程:工作進(jìn)程
人們的生活水平日益提高,電腦成為人們生活中和工作中不可或缺的工具,只有對(duì)電腦更多的了解,我們才能更好的使用,那么接下來(lái)小編就帶領(lǐng)大家學(xué)習(xí)編譯程序的相關(guān)教程.
程圖1
工作進(jìn)程
編輯
編譯程序也叫編譯系統(tǒng),是把用高級(jí)言語(yǔ)編寫(xiě)的面向進(jìn)程的源程序翻譯成方針程序的言語(yǔ)處理程序。編譯程序把一個(gè)源程序翻譯成方針程序的作業(yè)進(jìn)程分為五個(gè)階段:詞法剖析;語(yǔ)法剖析;中心代碼生成;代碼優(yōu)化;方針代碼生成。主要是進(jìn)行詞法剖析和語(yǔ)法剖析,又稱為源程序剖析,剖析進(jìn)程中發(fā)現(xiàn)有語(yǔ)法錯(cuò)誤,給出提示信息。
編譯程序教程:工作進(jìn)程圖2
(1) 詞法剖析
詞法剖析的任務(wù)是對(duì)由字符組成的單詞進(jìn)行處理,從左至右逐個(gè)字符地對(duì)源程序進(jìn)行掃描,發(fā)生一個(gè)個(gè)的單詞符號(hào),把作為字符串的源程序改造成為單詞符號(hào)串的中心程序。履行詞法剖析的程序稱為詞法剖析程序或掃描器。
源程序中的單詞符號(hào)經(jīng)掃描器剖析,一般發(fā)生二元式:?jiǎn)卧~種別;單詞本身的值。單詞種別通常用整數(shù)編碼,假如一個(gè)種別只含一個(gè)單詞符號(hào),那么對(duì)這個(gè)單詞符號(hào),種別編碼就完全代表它本身的值了。若一個(gè)種別含有許多個(gè)單詞符號(hào),那么,關(guān)于它的每個(gè)單詞符號(hào),除了給出種別編碼以外,還應(yīng)給出本身的值。
詞法剖析器一般來(lái)說(shuō)有兩種辦法構(gòu)造:手藝構(gòu)造和主動(dòng)生成。手藝構(gòu)造可運(yùn)用狀態(tài)圖進(jìn)行作業(yè),主動(dòng)生成運(yùn)用確定的有限主動(dòng)機(jī)來(lái)實(shí)現(xiàn)。
編譯程序教程:工作進(jìn)程圖3
(2) 語(yǔ)法剖析
編譯程序的語(yǔ)法剖析器以單詞符號(hào)作為輸入,剖析單詞符號(hào)串是否構(gòu)成符合語(yǔ)法規(guī)矩的語(yǔ)法單位,如表達(dá)式、賦值、循環(huán)等,最終看是否構(gòu)成一個(gè)符合要求的程序,按該言語(yǔ)運(yùn)用的語(yǔ)法規(guī)矩剖析檢查每條語(yǔ)句是否有正確的邏輯結(jié)構(gòu),程序是最終的一個(gè)語(yǔ)法單位。編譯程序的語(yǔ)法規(guī)矩可用上下文無(wú)關(guān)文法來(lái)描寫(xiě)。
語(yǔ)法剖析的辦法分為兩種:自上而下剖析法和自下而上剖析法。自上而下便是從文法的開(kāi)始符號(hào)出發(fā),向下推導(dǎo),推出句子。而自下而上剖析法選用的是移進(jìn)歸約法,基本思想是:用一個(gè)寄存符號(hào)的先進(jìn)后出棧,把輸入符號(hào)一個(gè)一個(gè)地移進(jìn)棧里,當(dāng)棧頂構(gòu)成某個(gè)發(fā)生式的一個(gè)候選式時(shí),即把棧頂?shù)倪@一部分歸約成該發(fā)生式的左鄰符號(hào)。
編譯程序教程:工作進(jìn)程圖4
(3) 中心代碼生成
中心代碼是源程序的一種內(nèi)部表示,或稱中心言語(yǔ)。中心代碼的作用是可使編譯程序的結(jié)構(gòu)在邏輯上更為簡(jiǎn)略明確,特別是可使方針代碼的優(yōu)化比較容易實(shí)現(xiàn)。中心代碼即為中心言語(yǔ)程序,中心言語(yǔ)的復(fù)雜性介于源程序言語(yǔ)和機(jī)器言語(yǔ)之間。中心言語(yǔ)有多種形式,常見(jiàn)的有逆波蘭記號(hào)、四元式、三元式和樹(shù)。
編譯程序教程:工作進(jìn)程圖5
(4) 代碼優(yōu)化
代碼優(yōu)化是指對(duì)程序進(jìn)行多種等價(jià)改換,使得從改換后的程序出發(fā),能生成更有用的方針代碼。所謂等價(jià),是指不改動(dòng)程序的運(yùn)轉(zhuǎn)成果。所謂有用,主要指方針代碼運(yùn)轉(zhuǎn)時(shí)間較短,以及占用的存儲(chǔ)空間較小。這種改換稱為優(yōu)化。
有兩類優(yōu)化:一類是對(duì)語(yǔ)法剖析后的中心代碼進(jìn)行優(yōu)化,它不依賴于具體的計(jì)算機(jī);另一類是在生成方針代碼時(shí)進(jìn)行的,它在很大程度上依賴于具體的計(jì)算機(jī)。關(guān)于前一類優(yōu)化,根據(jù)它所觸及的程序規(guī)?煞譃榫植?jī)?yōu)化、循環(huán)優(yōu)化和大局優(yōu)化三個(gè)不同的級(jí)別。