《第一章 編譯程序概述》由會員分享,可在線閱讀,更多相關(guān)《第一章 編譯程序概述(22頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,*,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,編譯原理,合肥計算機科學(xué)與技術(shù)系吳曉琴,課程簡介,先行課程:,高等數(shù)學(xué)、,(PASCAL),、離散數(shù)學(xué)、匯編語言、數(shù)據(jù)結(jié)構(gòu),編譯原理課程應(yīng)用領(lǐng)域,編譯器的設(shè)計,一般的軟件設(shè)計,例如:,文本編輯器、信息檢索系統(tǒng)、模式識別器,排版、繪圖系統(tǒng),程序驗證器,為什么要設(shè)置編譯原理課程?,1,、加深對程序內(nèi)部執(zhí)行過程的理解,2,、為了進一步編好程序,編譯原理,呂映芝,清華大學(xué)出版社,編譯程序設(shè)計原理,杜淑敏等,北京大學(xué)出版社,編譯原理,李贛生等,清華大學(xué)出版社,編譯程序構(gòu)造原理,和實現(xiàn)技術(shù),金成植,高等教育出版社,程序
2、設(shè)計語言編譯程序,陳火旺等,國防工業(yè)出版社,Compiler Construction Principle and,Pratice,編譯原理及實踐,Kenneth,C.Louden,機械工業(yè)出版社,參,考,書,籍,參,考,書,籍,編譯原理,張呂映芝素琴,清華大學(xué)出版社,Return,編譯程序概述,1.1,什么是編譯程序,1.2,編譯程序的結(jié)構(gòu),1.3,編譯程序的,設(shè)計實現(xiàn),1.4,經(jīng)典的編譯程序,過程式語言,Fortran,Pascal,C,函數(shù)式語言,Lisp,邏輯式語言,Prolog,對象式語言,C+,第一章 編譯程序概述,1.1,什么是編譯程序,.,程序設(shè)計語言,程序設(shè),計語言,高級語言
3、,低級語言(面向機器的語言),匯編語言,機器語言,2,.,編譯和解釋程序,目標(biāo)程序,源,程,序,編,譯,程,序,初始數(shù)據(jù),計,算,結(jié),果,源程序,解,釋,程,序,初始數(shù)據(jù),計,算,結(jié),果,翻譯程序,:是指這樣的一種程序,它能夠把一,種語言程序,(,源語言程序,),轉(zhuǎn)換成另一種功能等價,的語言程序,(,目標(biāo)語言程序,),。,編譯程序:,是一種翻譯程序,其源程序是高級語,言,目標(biāo)語言程序是低級語言。通常是一次性翻,譯方式。如,TC,等高級語言編譯程序。,解釋程序:,也是一種翻譯程序,它與編譯程序的,區(qū)別:立即執(zhí)行源程序,通常是逐句翻譯執(zhí)行,,如,BASIC,、,SQL,、,JAVA,的,BYTEC
4、ODE,解釋程序等。,功能,工作結(jié)果,實現(xiàn)技術(shù)上,解釋,程序,源程序的一個,執(zhí)行,系統(tǒng),源程序的,執(zhí)行結(jié)果,執(zhí)行中間代碼,編譯,程序,源程序的一個,轉(zhuǎn)換,系統(tǒng),源程序的,目標(biāo)代碼,把,中間代碼轉(zhuǎn),換成目標(biāo)程序,解釋程序和編譯程序的區(qū)別,解釋程序和編譯程序,的,根本區(qū)別,:,是否生成目標(biāo)代碼,3,、高級語言程序的處理過程,高級程序設(shè)計語言程序的典型處理過程如下圖所示:,需預(yù)處理源程序,預(yù)處理源程序,源程序,編譯程序,目標(biāo)語言(匯編語言),匯編程序,機器碼,裝配,/,連接,絕對機器代碼,可再裝配,目標(biāo)文件,機器碼,翻譯外文資料,編譯源程序,分析,閱讀原文,識別單詞,分析句子,輸入并掃描源程序,詞法
5、分析,語法分析,綜合,修辭加工,寫出譯文,代碼優(yōu)化,目標(biāo)代碼生成,1.,編譯程序的結(jié)構(gòu),翻譯外文資料與編譯源程序進行類比,編譯程序的功能和組織結(jié)構(gòu),表 處 理,詞,法,分,析,源,程,序,目,標(biāo),程,序,錯 誤 處 理,語,法,分,析,語,義,分,析,目,標(biāo),代,碼,生,成,前 端,后 端,中,間,代,碼,優(yōu),化,中,間,代,碼,生,成,編譯程序的,前端,:,與源語言有關(guān),而與目標(biāo)機無關(guān)的編譯程序,編譯程序的,后端,:,與目標(biāo)機有關(guān),而與源語言無關(guān)的編譯程序,遍(趟),:是對源程序或源程序的中間結(jié)果從頭到尾掃描一遍,并作有關(guān)加工處理,生成新的中間結(jié)果或目標(biāo)程序。,宿主機,:運行編譯程序的計算機
6、稱為宿主機。,目標(biāo)機,:運行編譯程序所產(chǎn)生的目標(biāo)代碼的計算機成為目標(biāo)機。,相關(guān)概念,1.3,編譯技術(shù)和軟件工具,一、編譯技術(shù)的發(fā)展,1950S,早期:算術(shù)工式譯成機器代碼。,1950S,中期:,FORTRAN,編譯系統(tǒng)。,1950S,末期:自動生成工具出現(xiàn),如:,LEX,、,YACC,。,1960S,:自展技術(shù)。,1971,年:用自展技術(shù)生成,PASCAL,編譯程序。,現(xiàn)代:并行編譯技術(shù)。,二、編譯技術(shù)與軟件工具,1,、先進的軟件開發(fā)技術(shù)和軟件工具能提高編程效率、縮短調(diào)試時間。,2,、編譯程序本身是一種軟件工具。,3,、大部分軟件工具的開發(fā)常用到編譯技術(shù)和方法。,4,、進行源程序處理的軟件工具
7、實質(zhì)上都在不同程度上用到了編譯程序各個部分的技術(shù)和方法。,1.4,編譯程序的構(gòu)造,一、編譯程序的構(gòu)造途徑,1,、用某種程序語言編寫;,2,、用編譯程序自動構(gòu)造工具構(gòu)造。,3,、通過現(xiàn)有的編譯基礎(chǔ)設(shè)施進行改造和組裝。,二、,T,型圖,T,型圖是用來表示一個編譯程序所涉及到的三個方面的語言的一種工具,將源語言,S,通過用語言,H,書寫的編譯器翻譯成目標(biāo)語言,T,的編譯程序可用如下,T,型圖,T,H,ST,表示,。,T,型圖的兩種組合方式:,三、編譯程序的自展,1,、方法:用“滾雪球”的方式生成編譯程序。,2,、思想:先用目標(biāo)機的匯編語言或機器語言書寫源語言的一個子集的編譯程序,再用這個子集作為書寫語言(屬于高級語言),實現(xiàn)源語言的編譯程序。,例:設(shè),C1C,目標(biāo)機,A,的語言為,A,,則兩層自展構(gòu)造實現(xiàn)語言,C,對應(yīng),A,機器的編譯程序過程可描述為如下:,其自展過程:用語言,A,編寫語言,C1,的編譯程序,T,A,C1A,;再用,C1,書寫語言,C,的編譯程序,T,C1,CA,;最后再將,T,C1,CA,經(jīng)過,T,A,C1A,編譯得到,T,A,CA,。,1.4,經(jīng)典的編譯程序,Pascal,編譯程序,C,編譯程序,Fortran,編譯程序,