第1章 緒論new (編譯原理 陳火旺)_第1頁
第1章 緒論new (編譯原理 陳火旺)_第2頁
第1章 緒論new (編譯原理 陳火旺)_第3頁
第1章 緒論new (編譯原理 陳火旺)_第4頁
第1章 緒論new (編譯原理 陳火旺)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、編譯原理編譯原理 主講:周雁主講:周雁Email:課程的性質(zhì)課程的性質(zhì)v計算機(jī)專業(yè)的專業(yè)基礎(chǔ)課計算機(jī)專業(yè)的專業(yè)基礎(chǔ)課v是軟件技術(shù)基礎(chǔ)是軟件技術(shù)基礎(chǔ)v是計算機(jī)專業(yè)的學(xué)生必修的一門主干課是計算機(jī)專業(yè)的學(xué)生必修的一門主干課學(xué)習(xí)編譯原理的目的學(xué)習(xí)編譯原理的目的v通過本課程主要學(xué)習(xí)編譯程序構(gòu)造的基本原理和技術(shù)通過本課程主要學(xué)習(xí)編譯程序構(gòu)造的基本原理和技術(shù)v加深對程序研發(fā)過程的理解加深對程序研發(fā)過程的理解v加深對程序執(zhí)行過程的認(rèn)識加深對程序執(zhí)行過程的認(rèn)識v進(jìn)一步編好程序進(jìn)一步編好程序v為將來從事系統(tǒng)軟件和軟件工具研究與開發(fā)打下基礎(chǔ)為將來從事系統(tǒng)軟件和軟件工具研究與開發(fā)打下基礎(chǔ)v提高計算機(jī)專業(yè)素養(yǎng)(計算機(jī)專

2、業(yè)的提高計算機(jī)專業(yè)素養(yǎng)(計算機(jī)專業(yè)的“詩經(jīng)詩經(jīng)”)學(xué)習(xí)任務(wù)學(xué)習(xí)任務(wù)v掌握編譯的理論基礎(chǔ)和形式化系統(tǒng)掌握編譯的理論基礎(chǔ)和形式化系統(tǒng)v了解編譯的全過程及其具體的實現(xiàn)方法了解編譯的全過程及其具體的實現(xiàn)方法成績考核方法成績考核方法v成績考核方法成績考核方法 平時成績占平時成績占20實踐成績占實踐成績占30% 期末考試成績占期末考試成績占50v平時成績?yōu)槠綍r成績?yōu)?課堂點名課堂點名+作業(yè)作業(yè)學(xué)習(xí)方法及要求學(xué)習(xí)方法及要求v認(rèn)真聽課,認(rèn)真理解書中的基本概念、基本原理與基認(rèn)真聽課,認(rèn)真理解書中的基本概念、基本原理與基本算法本算法v弄懂書中的例題與習(xí)題弄懂書中的例題與習(xí)題v在看書時或理解例題時,一定要劃出相應(yīng)的

3、細(xì)節(jié)變化在看書時或理解例題時,一定要劃出相應(yīng)的細(xì)節(jié)變化過程,通過畫圖來加深理解過程,通過畫圖來加深理解v在理解的基礎(chǔ)上記憶在理解的基礎(chǔ)上記憶v理論結(jié)合實踐理論結(jié)合實踐v上課、上機(jī)紀(jì)律!上課、上機(jī)紀(jì)律!v編譯原理課程學(xué)習(xí)方法之我見:編譯原理課程學(xué)習(xí)方法之我見:(1)編譯原理與離散數(shù)學(xué)的關(guān)系編譯原理與離散數(shù)學(xué)的關(guān)系(2)“游戲游戲”與與“游戲規(guī)則游戲規(guī)則”*例如,有一個文法例如,有一個文法 : (0)E E+E | E*E | (E) | i 請采用最右推導(dǎo)最右推導(dǎo)產(chǎn)生句子i+i*i : 解:E E+E E+E*E E+E*i E+i*i i+i*i“變形金剛變形金剛”游戲規(guī)則:游戲規(guī)則:1.從開

4、始符號開始變形;從開始符號開始變形;2.每次按照每次按照“變形規(guī)則變形規(guī)則” 將將一個一個式子的左部變形為右部;式子的左部變形為右部;3. 每次變形串中每次變形串中最右邊最右邊的大寫字母,一直變形到目標(biāo)串的大寫字母,一直變形到目標(biāo)串(不含大寫字母不含大寫字母)為止。為止。*試采用最右推導(dǎo)產(chǎn)生句子試采用最右推導(dǎo)產(chǎn)生句子:(1) i*(i+i) (2) i*(i+i*i ) C語言的復(fù)習(xí):語言的復(fù)習(xí):編寫程序編寫程序要求:要求:讓用戶輸入一個字符,然后判斷讓用戶輸入一個字符,然后判斷(如果用戶輸入如果用戶輸入多個字符,只判斷第一個多個字符,只判斷第一個):1.若是字母,在屏幕上輸出該字母若是字母,

5、在屏幕上輸出該字母ASC值;值;2.若是數(shù)字,在屏幕上輸出該數(shù)字的二進(jìn)制值;若是數(shù)字,在屏幕上輸出該數(shù)字的二進(jìn)制值;3.若是若是*/,在屏幕上輸出,在屏幕上輸出“輸入為算符輸入為算符”;4.若是其它字符,在屏幕上輸出若是其它字符,在屏幕上輸出“非法輸入!非法輸入!”。第第1章章 引論引論內(nèi)容簡介內(nèi)容簡介v 程序的翻譯程序的翻譯v 編譯程序的工作過程編譯程序的工作過程v 編譯程序的結(jié)構(gòu)編譯程序的結(jié)構(gòu)v 編譯程序的組織方式編譯程序的組織方式v 編譯程序的構(gòu)造編譯程序的構(gòu)造第第1章章 引論引論教學(xué)要求教學(xué)要求v掌握:編譯的概念,編譯的過程掌握:編譯的概念,編譯的過程v理解:編譯的各個階段理解:編譯的

6、各個階段v了解:編譯的結(jié)構(gòu)和組合了解:編譯的結(jié)構(gòu)和組合1.0 程序設(shè)計語言程序設(shè)計語言程序設(shè)計語言程序設(shè)計語言 在計算機(jī)上如何執(zhí)行一個高級語言程序?在計算機(jī)上如何執(zhí)行一個高級語言程序?把高級語言程序翻譯成機(jī)器語言程序把高級語言程序翻譯成機(jī)器語言程序1.運行所得的機(jī)器語言程序求得計算結(jié)果運行所得的機(jī)器語言程序求得計算結(jié)果v機(jī)器語言機(jī)器語言 001110010010001110010010v匯編語言匯編語言 ADDADDv高級語言高級語言 begin x:=9+2 endbegin x:=9+2 end v各種程序設(shè)計語言都有自己的語法和語義體各種程序設(shè)計語言都有自己的語法和語義體系,其編譯程序根

7、據(jù)這種語言的語法和語義系,其編譯程序根據(jù)這種語言的語法和語義將其翻譯成機(jī)器能夠接受的機(jī)器語言。將其翻譯成機(jī)器能夠接受的機(jī)器語言。v程序設(shè)計語言是按一定規(guī)則排列的符號集合程序設(shè)計語言是按一定規(guī)則排列的符號集合,而,而編譯程序就是把這些符號集合變成機(jī)器編譯程序就是把這些符號集合變成機(jī)器指令的轉(zhuǎn)換器指令的轉(zhuǎn)換器,編譯程序又稱為編譯器。,編譯程序又稱為編譯器。軟件分類軟件分類v軟件軟件 計算機(jī)系統(tǒng)中的程序及其文檔計算機(jī)系統(tǒng)中的程序及其文檔v系統(tǒng)軟件系統(tǒng)軟件 居于計算機(jī)系統(tǒng)中最靠近硬件的一層,其他軟件居于計算機(jī)系統(tǒng)中最靠近硬件的一層,其他軟件一般都通過系統(tǒng)軟件發(fā)揮作用,如一般都通過系統(tǒng)軟件發(fā)揮作用,如編

8、譯系統(tǒng)編譯系統(tǒng)和操作和操作系統(tǒng)。系統(tǒng)。 v應(yīng)用軟件應(yīng)用軟件 把軟件語言編寫的各種程序處理成可在計算機(jī)上把軟件語言編寫的各種程序處理成可在計算機(jī)上執(zhí)行的程序。執(zhí)行的程序。操作系統(tǒng)編譯系統(tǒng)編譯系統(tǒng)裸機(jī)編譯程序的重要性編譯程序的重要性v使得計算機(jī)用戶不必考慮與機(jī)器有關(guān)的繁瑣細(xì)節(jié)使得計算機(jī)用戶不必考慮與機(jī)器有關(guān)的繁瑣細(xì)節(jié)v使程序員和程序設(shè)計人員獨立于機(jī)器使程序員和程序設(shè)計人員獨立于機(jī)器 一、翻譯程序的定義一、翻譯程序的定義 程序的翻譯通常有兩種方式程序的翻譯通常有兩種方式:1.1.編譯編譯2.2.解釋解釋翻譯:翻譯: 是指能將用甲語言(源語言)編寫的程序,在是指能將用甲語言(源語言)編寫的程序,在不改

9、變語義不改變語義的條件下轉(zhuǎn)換成用乙語言(目標(biāo)語言)書寫的程序。的條件下轉(zhuǎn)換成用乙語言(目標(biāo)語言)書寫的程序。 高級語言程序高級語言程序翻譯翻譯機(jī)器語言程序機(jī)器語言程序1.1 什么是編譯程序什么是編譯程序(compiler)二、什么是編譯程序二、什么是編譯程序(compiler)(compiler)v編譯程序編譯程序 是一個語言翻譯程序是一個語言翻譯程序, ,是將用是將用高級語言高級語言書寫的源程序翻譯成等價的書寫的源程序翻譯成等價的低級語言低級語言的目標(biāo)的目標(biāo)程序。程序。C、PASCLE、JAVA等等機(jī)器語言、匯編語言機(jī)器語言、匯編語言v編譯程序的功能編譯程序的功能一個編譯程序就是一個語言翻譯

10、程序,它把一種語言一個編譯程序就是一個語言翻譯程序,它把一種語言( (稱作稱作源語言源語言) )編寫的程序翻譯成另一種語言編寫的程序翻譯成另一種語言 ( (稱作稱作目目標(biāo)語言標(biāo)語言) )的等價的程序的等價的程序. .v世界上第一個編譯程序世界上第一個編譯程序FORTRANFORTRAN編譯程序是編譯程序是2020世紀(jì)世紀(jì)5050年代中期研制成功。年代中期研制成功。高級語言書高級語言書寫的程序?qū)懙某绦蚓幾g程序編譯程序 低級語言程序低級語言程序1.編譯方式是一種分階段進(jìn)行的方式。編譯方式是一種分階段進(jìn)行的方式。 兩個階段的轉(zhuǎn)換:兩個階段的轉(zhuǎn)換:v編譯階段編譯階段 v運行階段運行階段 三、三、 編譯

11、方式編譯方式源程序編譯程序目標(biāo)程序編譯時初始數(shù)據(jù)計算結(jié)果運行時目標(biāo)代碼運行子程序三個階段的轉(zhuǎn)換:三個階段的轉(zhuǎn)換:v編譯階段編譯階段v匯編階段匯編階段 v運行階段運行階段 源程序匯編語言編譯時編譯程序匯編程序目標(biāo)代碼匯編時初始數(shù)據(jù)計算結(jié)果運行時目標(biāo)代碼運行字程序2.編譯方式的特點編譯方式的特點 編譯方式下,生成了編譯方式下,生成了目標(biāo)代碼目標(biāo)代碼,且可多次執(zhí)行。,且可多次執(zhí)行。 在編譯方式下,源程序的執(zhí)行需要在編譯方式下,源程序的執(zhí)行需要分階段分階段。v如果編譯后的目標(biāo)程序是機(jī)器語言程序,則源程序如果編譯后的目標(biāo)程序是機(jī)器語言程序,則源程序的執(zhí)行分為的執(zhí)行分為兩大階段兩大階段:編譯階段和運行階段

12、。:編譯階段和運行階段。v如果編譯后的目標(biāo)程序是匯編語言程序,如果編譯后的目標(biāo)程序是匯編語言程序, 則源程序則源程序的執(zhí)行分為的執(zhí)行分為三大階段三大階段:編譯階段、匯編階段和運行:編譯階段、匯編階段和運行階段。階段。 完成解釋工作的解釋程序?qū)丛闯绦蛑型瓿山忉尮ぷ鞯慕忉尦绦驅(qū)丛闯绦蛑姓Z語句的動態(tài)順序句的動態(tài)順序,逐句地進(jìn)行分析解釋,并立,逐句地進(jìn)行分析解釋,并立即予以執(zhí)行。即予以執(zhí)行。v優(yōu)點優(yōu)點:直觀易懂,結(jié)構(gòu)簡單,易于實現(xiàn)人機(jī)對話直觀易懂,結(jié)構(gòu)簡單,易于實現(xiàn)人機(jī)對話v缺點缺點:效率低效率低四、四、 解釋方式解釋方式 源程序解釋執(zhí)行的歷程源程序解釋執(zhí)行的歷程 在解釋方式下,并在解釋方式下,并

13、不生成目標(biāo)代碼不生成目標(biāo)代碼,而是直接執(zhí),而是直接執(zhí)行源程序本身。這是編譯方式與解釋方式的根本區(qū)行源程序本身。這是編譯方式與解釋方式的根本區(qū)別。別。 先看自然語言的翻譯先看自然語言的翻譯v1. 識別出句子中的一個個單字識別出句子中的一個個單字v2. 分析句子的語法結(jié)構(gòu)分析句子的語法結(jié)構(gòu)v3. 初步翻譯句子的含意初步翻譯句子的含意v4. 譯文修飾譯文修飾v5. 寫出最后譯文寫出最后譯文1.2 1.2 編譯過程概述編譯過程概述 編譯的五個階段編譯的五個階段v1. 詞法分析詞法分析v2. 語法分析語法分析v3. 語義分析中間代碼生成語義分析中間代碼生成v4. 優(yōu)化優(yōu)化v5. 目標(biāo)代碼生成目標(biāo)代碼生成

14、1.2 1.2 編譯過程概述編譯過程概述 目標(biāo)代碼源程序出錯處理語法分析程序語義分析程序目標(biāo)代碼生成程序詞法分析程序中間代碼生成程序代碼優(yōu)化程序表格管理1.2 1.2 編譯過程概述編譯過程概述舉例說明:舉例說明:有一個有一個C C語言程序,對它進(jìn)行編譯語言程序,對它進(jìn)行編譯void jisuan() int y,c,b; float x,a,b; x=a+b-50; y=c+(d+x)+b; 1.2 1.2 編譯過程概述編譯過程概述 一、詞法分析一、詞法分析 void jisuan() int y,c,b; float x,a,b; x=a+b-50; y=c+(d+x)+b; 識別右邊程序中

15、的單詞識別右邊程序中的單詞基本字:基本字:標(biāo)識符:標(biāo)識符:整常數(shù):整常數(shù):運算符:運算符:界限符界限符:v任務(wù):任務(wù): 輸入源程序,對構(gòu)成源程序的字符串進(jìn)行輸入源程序,對構(gòu)成源程序的字符串進(jìn)行 掃描和分析,識別出一個個的單詞。掃描和分析,識別出一個個的單詞。v單詞:單詞: 是高級語言中有實在意義的最小語法單位,是高級語言中有實在意義的最小語法單位,它由字符構(gòu)成。它由字符構(gòu)成。void 、int 、 floata、b、c、d、x、y、 jisuan50、=( ),), ;一、一、 詞法分析詞法分析 轉(zhuǎn)換:轉(zhuǎn)換: 對基本字、運算符、界限符的轉(zhuǎn)換;對基本字、運算符、界限符的轉(zhuǎn)換; 標(biāo)識符的轉(zhuǎn)換;標(biāo)識

16、符的轉(zhuǎn)換; 常數(shù)的轉(zhuǎn)換;常數(shù)的轉(zhuǎn)換; 轉(zhuǎn)換完成后的格式轉(zhuǎn)換完成后的格式:(單詞種別:(單詞種別 單詞值)單詞值) 詞法分析依照詞法規(guī)則,識別出正確地單詞,詞法分析依照詞法規(guī)則,識別出正確地單詞,轉(zhuǎn)換轉(zhuǎn)換成統(tǒng)一規(guī)格,備用。成統(tǒng)一規(guī)格,備用。描述詞法規(guī)則:描述詞法規(guī)則:有效工具是正規(guī)式和有限自動機(jī)有效工具是正規(guī)式和有限自動機(jī)二、語法分析二、語法分析 語法規(guī)則:語法規(guī)則:語言的規(guī)則,又稱為語言的規(guī)則,又稱為文法文法;規(guī)定單詞如何構(gòu);規(guī)定單詞如何構(gòu) 成短語、語句、過程和程序。成短語、語句、過程和程序。 任務(wù):任務(wù): 在詞法分析的基礎(chǔ)上,根據(jù)語言的在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則語法規(guī)則, 把單詞

17、符號組成各類的語法單位:短語、子把單詞符號組成各類的語法單位:短語、子 句、語句、過程、程序。句、語句、過程、程序。語法規(guī)則的表示:語法規(guī)則的表示: (Backus Backus 范式)范式) BNF: A:=B|CBNF: A:=B|C 讀做讀做“A A定義為定義為B B或或C”C”語法分析方法:語法分析方法: 推導(dǎo)和歸納。推導(dǎo)和歸納。三、三、 語義分析與中間代碼產(chǎn)生語義分析與中間代碼產(chǎn)生 中間代碼的形式:中間代碼的形式: 四元式、三元式、逆波蘭式四元式、三元式、逆波蘭式 任務(wù):任務(wù): 對語法分析識別出的各類對語法分析識別出的各類語法范疇語法范疇,分析其含,分析其含 義,進(jìn)行和初步翻譯,產(chǎn)生

18、介于源代碼和目義,進(jìn)行和初步翻譯,產(chǎn)生介于源代碼和目 標(biāo)代碼之間的一種代碼。標(biāo)代碼之間的一種代碼。分為兩個階段:分為兩個階段: & 對每種語法范疇進(jìn)行靜態(tài)語義檢查對每種語法范疇進(jìn)行靜態(tài)語義檢查 & 若語義正確,就進(jìn)行中間代碼的翻譯若語義正確,就進(jìn)行中間代碼的翻譯 四、四、 代碼優(yōu)化代碼優(yōu)化 任務(wù):任務(wù):對前面產(chǎn)生的中間代碼進(jìn)行加工變換,使變換后對前面產(chǎn)生的中間代碼進(jìn)行加工變換,使變換后 的代碼更為高效的代碼更為高效 (時間,空間上)。(時間,空間上)。原則:原則: 等價變換等價變換 主要方面:主要方面: 公共子表達(dá)式的提取,合并已知量,刪除無用公共子表達(dá)式的提取,合并已知量,刪

19、除無用 語句,循環(huán)優(yōu)化等語句,循環(huán)優(yōu)化等 五、五、 目標(biāo)代碼生成目標(biāo)代碼生成 任務(wù):任務(wù): 把經(jīng)過優(yōu)化的中間代碼轉(zhuǎn)換成特定機(jī)器上的低把經(jīng)過優(yōu)化的中間代碼轉(zhuǎn)換成特定機(jī)器上的低 級語言代碼。級語言代碼。目標(biāo)代碼的形式:目標(biāo)代碼的形式: & 絕對指令代碼絕對指令代碼:(可直接運行):(可直接運行) & 匯編指令代碼匯編指令代碼:(要經(jīng)過匯編才能運行):(要經(jīng)過匯編才能運行) & 可重新定位的指令代碼可重新定位的指令代碼:(要經(jīng)過:(要經(jīng)過linklink才能運行)才能運行) v說明:說明: 上述編譯過程的階段劃分是一種典型的處理模式上述編譯過程的階段劃分是一種典型的處理模式,

20、事實上并非所有的編譯程序都包括這樣幾個階段,事實上并非所有的編譯程序都包括這樣幾個階段。有些編譯程序并不要中間代碼,即不存在中間代。有些編譯程序并不要中間代碼,即不存在中間代碼生成階段;有些編譯程序不進(jìn)行優(yōu)化,優(yōu)化階段碼生成階段;有些編譯程序不進(jìn)行優(yōu)化,優(yōu)化階段即可省去即可省去; ;有些最簡單的編譯程序只有詞法分析,有些最簡單的編譯程序只有詞法分析,語法分析;語義分析和目標(biāo)代碼生成。語法分析;語義分析和目標(biāo)代碼生成。1.3 編譯程序的結(jié)構(gòu)編譯程序的結(jié)構(gòu) 編編譯譯程程 序序總總框框詞法分析器詞法分析器語法分析器語法分析器中間代碼生成中間代碼生成中間代碼優(yōu)化中間代碼優(yōu)化目標(biāo)代碼生成目標(biāo)代碼生成源程

21、序源程序單詞符號單詞符號語法單位語法單位四元式四元式四元式四元式目標(biāo)程序目標(biāo)程序 出出錯錯處處理理 表表格格管管理理一、表格與表格管理一、表格與表格管理 v與編譯前三個階段有關(guān)的表格有:與編譯前三個階段有關(guān)的表格有: &* 符號表符號表: :登記源程序中出現(xiàn)的每個名字登記源程序中出現(xiàn)的每個名字(常量名(常量名、變量名、數(shù)組名等)、變量名、數(shù)組名等)以及名字的各種屬性;以及名字的各種屬性; & 常數(shù)表常數(shù)表: :登記源程序中出現(xiàn)的各種類型的常數(shù)值;登記源程序中出現(xiàn)的各種類型的常數(shù)值; & 標(biāo)號表標(biāo)號表: :登記源程序中出現(xiàn)的標(biāo)號的定義和引用情況登記源程序中出現(xiàn)的標(biāo)號的定義

22、和引用情況; & 分程序入口表分程序入口表: :登記過程的層次、分程序符號表的入登記過程的層次、分程序符號表的入 口等;口等; & 中間代碼表中間代碼表: :記錄四元式序列的表。記錄四元式序列的表。v表格的作用表格的作用:登記源程序的各類信息和編譯各階段的登記源程序的各類信息和編譯各階段的進(jìn)展?fàn)顩r。進(jìn)展?fàn)顩r。v編譯各階段均須編譯各階段均須維持表格維持表格并進(jìn)行并進(jìn)行表格管理。表格管理。二、出錯處理二、出錯處理 v任務(wù):任務(wù):如果源程序有錯誤,編譯程序應(yīng)該設(shè)法發(fā)現(xiàn)如果源程序有錯誤,編譯程序應(yīng)該設(shè)法發(fā)現(xiàn)錯誤,并報告給用戶。錯誤,并報告給用戶。v完成:完成:由專門的出錯處理程序來完成

23、。由專門的出錯處理程序來完成。 v源程序中的錯誤通常分為:源程序中的錯誤通常分為: & 語法錯誤語法錯誤不符合語法(或詞法)規(guī)則的錯誤單詞不符合語法(或詞法)規(guī)則的錯誤單詞拼寫錯誤、括號不匹配拼寫錯誤、括號不匹配. & 語義錯誤語義錯誤不符合語義規(guī)則的錯誤說明錯誤、作用不符合語義規(guī)則的錯誤說明錯誤、作用域錯誤、類型不匹配域錯誤、類型不匹配.三、三、 遍遍( (趟,趟程趟,趟程) ) v遍遍: : 對源程序或源程序的中間結(jié)果對源程序或源程序的中間結(jié)果從頭到尾掃描一從頭到尾掃描一 次,次,并作有關(guān)的并作有關(guān)的加工處理,生成新的中間結(jié)果或加工處理,生成新的中間結(jié)果或 目標(biāo)程序。目標(biāo)程

24、序。 & 注:遍與階段的含義毫無關(guān)系。注:遍與階段的含義毫無關(guān)系。v根據(jù)對編譯程序在完成翻譯任務(wù)的過程中需要對源根據(jù)對編譯程序在完成翻譯任務(wù)的過程中需要對源程序或其中間等價物掃描的遍數(shù),可以把編譯程序程序或其中間等價物掃描的遍數(shù),可以把編譯程序分為分為單遍掃描單遍掃描的的編譯程序編譯程序(只需掃描一遍只需掃描一遍) )和和多遍掃多遍掃描描的編譯程序的編譯程序( (需掃描多遍需掃描多遍) )。v 前端前端主要由與源語言有關(guān)但主要由與源語言有關(guān)但與目標(biāo)機(jī)器無關(guān)與目標(biāo)機(jī)器無關(guān)的那些的那些部分組成,如詞法分析、語法分析、語義分析與中部分組成,如詞法分析、語法分析、語義分析與中間代碼生成及部分代

25、碼優(yōu)化工作。間代碼生成及部分代碼優(yōu)化工作。 v 后端后端主要包括編譯中主要包括編譯中與目標(biāo)機(jī)器有關(guān)與目標(biāo)機(jī)器有關(guān)的那些部分,的那些部分,如與目標(biāo)機(jī)有關(guān)的代碼優(yōu)化和目標(biāo)代碼生成等。后如與目標(biāo)機(jī)有關(guān)的代碼優(yōu)化和目標(biāo)代碼生成等。后端不依賴于源語言而僅依賴于中間語言。端不依賴于源語言而僅依賴于中間語言。 v 可以通過改變編譯程序的后端來實現(xiàn)編譯程序的可以通過改變編譯程序的后端來實現(xiàn)編譯程序的移移植。植。四、四、 編譯的前端和后端編譯的前端和后端1.4 編譯程序的生成編譯程序的生成v構(gòu)造編譯程序的語言:構(gòu)造編譯程序的語言:1.直接用機(jī)器語言編寫的編譯程序直接用機(jī)器語言編寫的編譯程序2.用匯編語言編寫的編

26、譯程序用匯編語言編寫的編譯程序3.用高級語言編寫的編譯程序用高級語言編寫的編譯程序 (普遍采用的方法)(普遍采用的方法)v構(gòu)造編譯程序的方法:構(gòu)造編譯程序的方法: 1.自編譯:自編譯:“滾雪球滾雪球” 2.移植:同種語言的編譯程序在不同類型的機(jī)器之移植:同種語言的編譯程序在不同類型的機(jī)器之間移植間移植v編譯工具編譯工具 LEX(詞法分析)(詞法分析) YACC(用于自動產(chǎn)生(用于自動產(chǎn)生LALR分析表)分析表)1.5 編譯程序與程序設(shè)計環(huán)境編譯程序與程序設(shè)計環(huán)境v編譯程序編譯程序 & 無疑是實現(xiàn)高級語言的一個最重要的工具無疑是實現(xiàn)高級語言的一個最重要的工具 & 支持程序設(shè)計人員進(jìn)行程序設(shè)計開發(fā)通常還需要其它一支持程序設(shè)計人員進(jìn)行程序設(shè)計開發(fā)通常還需要其它一 些工具:如編輯程序、連接程序、調(diào)試程序等些工具:如編輯程序、連接程序、調(diào)試程序等 & 編譯程序與這些程序設(shè)計工具一起構(gòu)成所謂的程序設(shè)計編譯程序與這些程序設(shè)計工具一起構(gòu)成所謂的程序設(shè)計 環(huán)境,如環(huán)境,如visual c,Delphi,C+Builderv程序設(shè)計環(huán)境程序設(shè)計環(huán)境 & 在一個程序設(shè)計環(huán)境中,編譯程序起著中心的作用在一個程序設(shè)計環(huán)境中,編

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論