版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、編譯原理2自我介紹自我介紹n姓名:劉善梅姓名:劉善梅nqq qq : 3068353030683530n辦公室:逸夫樓辦公室:逸夫樓c427c427n 郵箱:郵箱: 3課程介紹課程介紹n兩門(mén)獨(dú)立的課程:理論(兩門(mén)獨(dú)立的課程:理論(4848學(xué)時(shí))學(xué)時(shí)) 實(shí)驗(yàn)(實(shí)驗(yàn)(1616學(xué)時(shí))學(xué)時(shí))n考試成績(jī)組成考試成績(jī)組成 理論:理論:平時(shí)作業(yè)和考勤占平時(shí)作業(yè)和考勤占20%20%,期末結(jié)業(yè),期末結(jié)業(yè)考試占考試占80%80%; 實(shí)驗(yàn):實(shí)驗(yàn):根據(jù)實(shí)驗(yàn)報(bào)告和程序源代碼評(píng)分,根據(jù)實(shí)驗(yàn)報(bào)告和程序源代碼評(píng)分,實(shí)驗(yàn)報(bào)告占實(shí)驗(yàn)報(bào)告占40%, 40%, 程序源代碼占程序源代碼占60%60%。n課程特點(diǎn):課程特點(diǎn):難!難!4開(kāi)
2、課目的:開(kāi)課目的:介紹設(shè)計(jì)與構(gòu)造程序設(shè)計(jì)語(yǔ)言介紹設(shè)計(jì)與構(gòu)造程序設(shè)計(jì)語(yǔ)言編譯程序編譯程序的的原理與方法原理與方法源程序源程序編譯編譯程序程序目標(biāo)程序目標(biāo)程序連接連接可執(zhí)行程序可執(zhí)行程序預(yù)備知識(shí):預(yù)備知識(shí):形式語(yǔ)言與自動(dòng)機(jī)、形式語(yǔ)言與自動(dòng)機(jī)、兩門(mén)以上的高兩門(mén)以上的高級(jí)程序設(shè)計(jì)語(yǔ)級(jí)程序設(shè)計(jì)語(yǔ)言言匯編語(yǔ)言匯編語(yǔ)言數(shù)據(jù)結(jié)構(gòu)等數(shù)據(jù)結(jié)構(gòu)等how?5教學(xué)要求教學(xué)要求 通過(guò)課程的學(xué)習(xí)和實(shí)驗(yàn)的完成,通過(guò)課程的學(xué)習(xí)和實(shí)驗(yàn)的完成, 應(yīng)該應(yīng)該清楚的理解一個(gè)編譯程序是如何工作的;清楚的理解一個(gè)編譯程序是如何工作的; 如果在以后遇到了任何一個(gè)程序設(shè)計(jì)語(yǔ)言,如果在以后遇到了任何一個(gè)程序設(shè)計(jì)語(yǔ)言,應(yīng)該應(yīng)該知道如何實(shí)現(xiàn)這個(gè)語(yǔ)言的
3、多數(shù)機(jī)制;知道如何實(shí)現(xiàn)這個(gè)語(yǔ)言的多數(shù)機(jī)制; 應(yīng)應(yīng)具有一定的使用編譯構(gòu)造工具開(kāi)發(fā)編譯程序的具有一定的使用編譯構(gòu)造工具開(kāi)發(fā)編譯程序的經(jīng)驗(yàn);經(jīng)驗(yàn); 會(huì)會(huì)將所學(xué)的常用技術(shù)和算法應(yīng)用于類(lèi)似的軟件的將所學(xué)的常用技術(shù)和算法應(yīng)用于類(lèi)似的軟件的設(shè)計(jì)和實(shí)現(xiàn)中。設(shè)計(jì)和實(shí)現(xiàn)中。理論課內(nèi)容簡(jiǎn)介:理論課內(nèi)容簡(jiǎn)介:第一章:緒論 第二章:編譯基礎(chǔ)(形式語(yǔ)言 、有窮自動(dòng)機(jī)等)第三章:詞法分析 第四章:語(yǔ)法分析第五章:語(yǔ)法制導(dǎo)翻譯和中間代碼生成第七章:程序運(yùn)行時(shí)的存貯分配問(wèn)題第八章:代碼優(yōu)化第九章:目標(biāo)代碼生成 第六章:符號(hào)表實(shí)驗(yàn)課內(nèi)容簡(jiǎn)介:實(shí)驗(yàn)課內(nèi)容簡(jiǎn)介:第一次課:詞法分析 (4學(xué)時(shí))第二次課:語(yǔ)法分析 (4學(xué)時(shí))第三次課:詞
4、義分析、代碼生成 (4學(xué)時(shí))第四次課:小型c語(yǔ)言編譯器設(shè)計(jì)(4學(xué)時(shí))詳細(xì)實(shí)驗(yàn)內(nèi)容請(qǐng)見(jiàn)實(shí)驗(yàn)要求和實(shí)驗(yàn)指導(dǎo)書(shū)8教材:教材:編譯原理編譯原理(第(第2版),張素琴、呂映芝、蔣維杜、戴桂版),張素琴、呂映芝、蔣維杜、戴桂 蘭,清華大學(xué)出版社蘭,清華大學(xué)出版社 2004參考書(shū):參考書(shū):教材及主要參考書(shū)教材及主要參考書(shū) compilers: principles, technigues, and tools alfred v.aho, ravi sethi, jeffrey d.ullman, addison-wesley,1986. 譯著版:機(jī)械工業(yè)出版社,譯著版:機(jī)械工業(yè)出版社,2003,李建中,姜守
5、旭譯。,李建中,姜守旭譯。(龍書(shū))龍書(shū)) 中文名:編譯原理技術(shù)和工具中文名:編譯原理技術(shù)和工具 modern compiler implementation in java modern compiler implementation in c andrew w.appel,人民郵電出版社影印,人民郵電出版社影印,2005 (虎書(shū))(虎書(shū)) 中文名:現(xiàn)代編譯原理中文名:現(xiàn)代編譯原理 advanced compiler design and implementation steven s. muchnick, 1997. 機(jī)械工業(yè)出版社影印機(jī)械工業(yè)出版社影印,2003 (鯨書(shū))(鯨書(shū)) 中文名:
6、高級(jí)編譯器設(shè)計(jì)與實(shí)現(xiàn)中文名:高級(jí)編譯器設(shè)計(jì)與實(shí)現(xiàn)內(nèi)地內(nèi)地 陳火旺(國(guó)防科大版)陳火旺(國(guó)防科大版) 陳意云(中國(guó)科技大學(xué)版)陳意云(中國(guó)科技大學(xué)版) 王生原等(人民郵電版)王生原等(人民郵電版) 王生原等(清華大學(xué)第三版)王生原等(清華大學(xué)第三版) 主要參考書(shū)主要參考書(shū)10第一章緒論第一章緒論n編譯器就是一個(gè)編譯器就是一個(gè)程序程序,它,它讀入讀入用某種語(yǔ)言用某種語(yǔ)言編寫(xiě)的源程序,并編寫(xiě)的源程序,并翻譯翻譯成一個(gè)成一個(gè)與之等價(jià)與之等價(jià)的的另一種語(yǔ)言編寫(xiě)的源程序。另一種語(yǔ)言編寫(xiě)的源程序。編譯器編譯器源程序源程序目標(biāo)程序目標(biāo)程序錯(cuò)誤信息錯(cuò)誤信息fortran、pascal、java、 c .另一種程
7、序另一種程序設(shè)計(jì)語(yǔ)言、設(shè)計(jì)語(yǔ)言、匯編語(yǔ)匯編語(yǔ)言、機(jī)言、機(jī)器語(yǔ)言器語(yǔ)言1.1什么是編譯程序什么是編譯程序什么是編譯程序什么是編譯程序 編譯程序編譯程序通常通常是是從較高級(jí)語(yǔ)言的程序翻譯從較高級(jí)語(yǔ)言的程序翻譯 至較低級(jí)語(yǔ)言的程序至較低級(jí)語(yǔ)言的程序,如,如c 代碼匯編代碼a c compilerc+ 代碼匯編代碼a c+ compilerc+ 代碼c代碼another c+ compilerjava 代碼bytecode代碼a java compiler121.2編譯過(guò)程概述編譯過(guò)程概述編譯程序的工作,從輸入源程序開(kāi)始,到輸出目編譯程序的工作,從輸入源程序開(kāi)始,到輸出目標(biāo)程序結(jié)束,與自然語(yǔ)言之間的翻
8、譯有很多相似之處。標(biāo)程序結(jié)束,與自然語(yǔ)言之間的翻譯有很多相似之處。 一段英文翻譯成中文,一段英文翻譯成中文,需經(jīng)下列步驟:需經(jīng)下列步驟:識(shí)別出句子中的單詞識(shí)別出句子中的單詞分析句子的語(yǔ)法結(jié)構(gòu)分析句子的語(yǔ)法結(jié)構(gòu)根據(jù)句子的含義進(jìn)行初步分析根據(jù)句子的含義進(jìn)行初步分析對(duì)譯文進(jìn)行修飾對(duì)譯文進(jìn)行修飾寫(xiě)出最后的譯文寫(xiě)出最后的譯文編譯程序編譯程序詞法分析詞法分析代碼優(yōu)化代碼優(yōu)化語(yǔ)法分析語(yǔ)法分析語(yǔ)義分析及中語(yǔ)義分析及中間代碼生成間代碼生成目標(biāo)代碼生成目標(biāo)代碼生成構(gòu)成編譯程構(gòu)成編譯程序各個(gè)階段序各個(gè)階段i am a teacher.13編譯器的各個(gè)階段:編譯器的各個(gè)階段:編譯器是分編譯器是分階段執(zhí)行的。階段執(zhí)行的
9、。每個(gè)階段將源程每個(gè)階段將源程序從一種表示轉(zhuǎn)序從一種表示轉(zhuǎn)換成另一種表示換成另一種表示源程序源程序詞法分析器詞法分析器錯(cuò)錯(cuò)誤誤處處理理器器符符號(hào)號(hào)管管理理表表語(yǔ)法分析器語(yǔ)法分析器語(yǔ)義分析器語(yǔ)義分析器中間代碼生成器中間代碼生成器代碼優(yōu)化器代碼優(yōu)化器代碼生成器代碼生成器編譯的各編譯的各個(gè)階段個(gè)階段14各分析階段各分析階段隨著編譯器各個(gè)階段的進(jìn)展,源程序的內(nèi)部表示不隨著編譯器各個(gè)階段的進(jìn)展,源程序的內(nèi)部表示不斷地發(fā)生變化。斷地發(fā)生變化。以以a=b+c *d為例為例1。詞法分析。詞法分析讀入源程序讀入源程序完成的任務(wù):完成的任務(wù):識(shí)別出單詞:識(shí)別出單詞: a、=、b、+、c 、 *、 d并用記號(hào)方式表
10、示識(shí)別出的單詞并用記號(hào)方式表示識(shí)別出的單詞關(guān)鍵字、標(biāo)識(shí)關(guān)鍵字、標(biāo)識(shí)符、常數(shù)、算符、常數(shù)、算符和界符符和界符例:例:25表示表示a、b、c、d;36:;:;2:;:;31:*記號(hào)表示邏輯記號(hào)表示邏輯上相關(guān)的字符上相關(guān)的字符序列,常用整序列,常用整數(shù)來(lái)表示數(shù)來(lái)表示上述單詞表示為:上述單詞表示為:(25,a),(36,=),(25,b),(32,+),(25,c),(31,*),(25,d)n程序文本程序文本if x = y then z := 1 else z := 2; 經(jīng)詞法分析,變成一個(gè)個(gè)單詞經(jīng)詞法分析,變成一個(gè)個(gè)單詞nif, x, =, y, then, z, :=, 1, else, z
11、, :=, 2, ;n語(yǔ)言的單詞符號(hào)是由語(yǔ)言的單詞符號(hào)是由詞法規(guī)則詞法規(guī)則所確定的。所確定的。詞法詞法規(guī)則規(guī)則規(guī)定了字母表中哪樣的字符串是一個(gè)單詞規(guī)定了字母表中哪樣的字符串是一個(gè)單詞符號(hào)。符號(hào)。又例,又例, 從左至右掃描字符流的源程序從左至右掃描字符流的源程序、分解構(gòu)成源、分解構(gòu)成源程序的字符串,程序的字符串,識(shí)別出識(shí)別出(拼拼)一個(gè)個(gè)的一個(gè)個(gè)的單詞單詞(符號(hào))(符號(hào)) 單詞符號(hào)是語(yǔ)言中具有獨(dú)立意義的最基本單詞符號(hào)是語(yǔ)言中具有獨(dú)立意義的最基本結(jié)構(gòu)。多數(shù)程序語(yǔ)言中,結(jié)構(gòu)。多數(shù)程序語(yǔ)言中,單詞單詞符號(hào)一般符號(hào)一般包括包括 各類(lèi)型的各類(lèi)型的常數(shù)、保留字、標(biāo)識(shí)符常數(shù)、保留字、標(biāo)識(shí)符、運(yùn)算符、界符、運(yùn)算
12、符、界符等等。等等。 詞法分析詞法分析第一步識(shí)別單詞第一步識(shí)別單詞position := initial + rate * 60;單詞類(lèi)型單詞類(lèi)型單詞值單詞值 標(biāo)識(shí)符標(biāo)識(shí)符1(id1) position 算符算符(賦值賦值) := 標(biāo)識(shí)符標(biāo)識(shí)符2(id2) initial 算符算符(加加) + 標(biāo)識(shí)符標(biāo)識(shí)符3(id3) rate 算符算符(乘乘) * 整數(shù)整數(shù) 60 分號(hào)分號(hào) ;詞法分析詞法分析18語(yǔ)法分析語(yǔ)法分析在詞法分析的基礎(chǔ)上,根據(jù)語(yǔ)言的語(yǔ)法規(guī)則,在詞法分析的基礎(chǔ)上,根據(jù)語(yǔ)言的語(yǔ)法規(guī)則,把單詞符號(hào)串組成各類(lèi)語(yǔ)法單位把單詞符號(hào)串組成各類(lèi)語(yǔ)法單位.具體的說(shuō),語(yǔ)法分析是在單詞流的基礎(chǔ)上建立具體
13、的說(shuō),語(yǔ)法分析是在單詞流的基礎(chǔ)上建立一個(gè)層次結(jié)構(gòu)一個(gè)層次結(jié)構(gòu)-建立語(yǔ)法樹(shù)建立語(yǔ)法樹(shù)賦值語(yǔ)句賦值語(yǔ)句標(biāo)識(shí)符標(biāo)識(shí)符=表達(dá)式表達(dá)式 id1表達(dá)式表達(dá)式標(biāo)識(shí)符標(biāo)識(shí)符 id2 +表達(dá)式表達(dá)式表達(dá)式表達(dá)式*標(biāo)識(shí)符標(biāo)識(shí)符 id3表達(dá)式表達(dá)式 整數(shù)整數(shù) 60語(yǔ)法分析語(yǔ)法分析 舉例舉例id1 := id2 + id3 * 60 ;(pascal)語(yǔ)法規(guī)則)語(yǔ)法規(guī)則 :=“:=” :=“+” :=“*” :=“(”“)” := := := 賦值語(yǔ)句賦值語(yǔ)句標(biāo)識(shí)符標(biāo)識(shí)符表達(dá)式表達(dá)式表達(dá)式表達(dá)式+表達(dá)式表達(dá)式表達(dá)式表達(dá)式標(biāo)識(shí)符標(biāo)識(shí)符整數(shù)整數(shù)標(biāo)識(shí)符標(biāo)識(shí)符:=表達(dá)式表達(dá)式*id1:=id2+id3*60:=+60*id1
14、id2id322語(yǔ)義分析階段語(yǔ)義分析階段語(yǔ)義分析利用語(yǔ)法分析階段確定的層次結(jié)構(gòu)來(lái)識(shí)別語(yǔ)義分析利用語(yǔ)法分析階段確定的層次結(jié)構(gòu)來(lái)識(shí)別表達(dá)式和語(yǔ)句中的操作信息及類(lèi)型信息表達(dá)式和語(yǔ)句中的操作信息及類(lèi)型信息= + a b*c dtemp1=c*dtemp2=b+temp1 temp1 temp2a=temp2語(yǔ)義分析語(yǔ)義分析n 句子的結(jié)構(gòu)理解了,句子的結(jié)構(gòu)理解了,撲捉它的撲捉它的“含義含義” 如:杰克說(shuō)杰瑞把他的作業(yè)落在了家里。如:杰克說(shuō)杰瑞把他的作業(yè)落在了家里。 “他的他的”是誰(shuí)的?是誰(shuí)的? 又:杰克說(shuō)杰克把他的作業(yè)落在了家里。又:杰克說(shuō)杰克把他的作業(yè)落在了家里。 幾個(gè)杰克?幾個(gè)杰克?n杰克把她的作業(yè)
15、落在了家里。杰克把她的作業(yè)落在了家里。(杰克是男生)(杰克是男生)“杰克杰克”和和“她的她的”不一致。不一致。 “杰克杰克”和和“他的他的”才匹配才匹配語(yǔ)義分析語(yǔ)義分析25中間代碼生成階段中間代碼生成階段本階段將產(chǎn)生源程序的一個(gè)顯式中間表示本階段將產(chǎn)生源程序的一個(gè)顯式中間表示這種中間表示可以看成是某種抽象的程這種中間表示可以看成是某種抽象的程序,通常是與平臺(tái)無(wú)關(guān)的序,通常是與平臺(tái)無(wú)關(guān)的其重要性質(zhì):其重要性質(zhì):1.易于產(chǎn)生易于產(chǎn)生2.易于翻譯成目標(biāo)程序易于翻譯成目標(biāo)程序下面是用下面是用三地址碼三地址碼(四元式)(四元式)表示的例子:表示的例子:temp1=c*dtemp2=b+temp1a=te
16、mp2(* , c , d , tempt1) (+ , b, tempt1 , tempt2) (= , tempt2 , , a)id1:= id2 + id3 * 60(1)(inttoreal, 60, ,t1)(2)(*,id3,t1,t2)(3)(+,id2,t2,t3)(4)(:=,t3,id1)27代碼優(yōu)化階段代碼優(yōu)化階段對(duì)代碼進(jìn)行變換對(duì)代碼進(jìn)行變換以使得編譯產(chǎn)生的目標(biāo)代碼更高效以使得編譯產(chǎn)生的目標(biāo)代碼更高效(執(zhí)行速度更快)(執(zhí)行速度更快)。對(duì)上面中間代碼進(jìn)行優(yōu)化處理后,產(chǎn)生如對(duì)上面中間代碼進(jìn)行優(yōu)化處理后,產(chǎn)生如下的代碼:下的代碼:temp1=c*da=b+temp1temp1
17、=c*dtemp2=b+temp1a=temp2如下程序 語(yǔ)法分析結(jié)果j = 2 * i + 1;if (j = n) j = 2 * i + 3;return aj;t1 = 2 * it2 = t1 + 1j = t2t3 = j nif t3 goto l0t4 = 2 * it5 = t4 + 3j = t5l0: t6 = ajreturn t6t1 = 2 * it2 = t1 + 1j = t2t3 = j nif t3 goto l0t4 = 2 * it5 = t4 + 3j = t5l0: t6 = ajreturn t6t1 = 2 * ij = t1 + 1t3 = j
18、 nif t3 goto l0 j = t1 + 3l0: t6 = ajreturn t6代碼優(yōu)化代碼優(yōu)化代碼優(yōu)化代碼優(yōu)化id1:= id2 + id3 * 60(1)(inttoreal60-t1)(2)( * id3 t1t2)(3)( +id2t2t3)(4)( :=t3-id1) 變換變換 (1) ( *id360.0 t1) ( 2)()( + id2 t1id1)31代碼生成階段代碼生成階段生成目標(biāo)機(jī)機(jī)器代碼或匯編代碼生成目標(biāo)機(jī)機(jī)器代碼或匯編代碼(*,id360.0 t1)(+,id2t1id1)movf id3,r2mulf #60.0,r2movf id2,r1addf r2
19、,r1movf r1,id1nexample: a in r0, i in r1, n in r2t1 = 2 * ij = t1 + 1t3 = j nif t3 goto l0 j = t1 + 3l0: t6 = ajreturn t6sll r1, 1, r1add r1, 1, jcmp j,r2blt .ll3add r1, 3, j.ll3: ld r0+j, rt retr代碼生成代碼生成n記錄記錄源程序中使用的源程序中使用的標(biāo)識(shí)符標(biāo)識(shí)符n收集收集每個(gè)標(biāo)識(shí)符的各種每個(gè)標(biāo)識(shí)符的各種屬性信息屬性信息n普通變量:普通變量:類(lèi)型、作用域、分配存儲(chǔ)信息類(lèi)型、作用域、分配存儲(chǔ)信息n函數(shù)或過(guò)
20、程:函數(shù)或過(guò)程:參數(shù)個(gè)數(shù)、類(lèi)型、傳遞方法參數(shù)個(gè)數(shù)、類(lèi)型、傳遞方法 返回值類(lèi)型返回值類(lèi)型符號(hào)表管理符號(hào)表管理(登錄,查找)登錄,查找)1.3 符號(hào)表符號(hào)表34符號(hào)表管理符號(hào)表管理int a,b;float e,fchar ch1,ch2;為什么要先說(shuō)明為什么要先說(shuō)明? 定義了變量的類(lèi)型,也就規(guī)定了變量定義了變量的類(lèi)型,也就規(guī)定了變量在內(nèi)存中的存放形式,在其上所能進(jìn)行的在內(nèi)存中的存放形式,在其上所能進(jìn)行的運(yùn)算運(yùn)算解決符號(hào)地址到存貯地址上的映射解決符號(hào)地址到存貯地址上的映射35編譯器的一個(gè)基本功能是編譯器的一個(gè)基本功能是記錄源程序中使用記錄源程序中使用的標(biāo)識(shí)符的標(biāo)識(shí)符并將它們并將它們記載到符號(hào)表中記
21、載到符號(hào)表中。符號(hào)表是一個(gè)數(shù)據(jù)結(jié)構(gòu)。符號(hào)表是一個(gè)數(shù)據(jù)結(jié)構(gòu)。 每個(gè)標(biāo)識(shí)符在符號(hào)表中都有每個(gè)標(biāo)識(shí)符在符號(hào)表中都有一條記錄一條記錄名字名字記號(hào)記號(hào)類(lèi)型類(lèi)型種屬種屬 addrid1(25)id2(25) b a例:例:int a,b;int簡(jiǎn)變簡(jiǎn)變 0 4 并并收集與每個(gè)標(biāo)識(shí)符相關(guān)的各種屬收集與每個(gè)標(biāo)識(shí)符相關(guān)的各種屬性信息,性信息,int簡(jiǎn)變簡(jiǎn)變36在編譯的各個(gè)階段都會(huì)發(fā)現(xiàn)源程序中的錯(cuò)誤,在編譯的各個(gè)階段都會(huì)發(fā)現(xiàn)源程序中的錯(cuò)誤,1.4錯(cuò)誤檢測(cè)與報(bào)告錯(cuò)誤檢測(cè)與報(bào)告為了使編譯器能繼續(xù)運(yùn)行,以檢測(cè)出源程序中為了使編譯器能繼續(xù)運(yùn)行,以檢測(cè)出源程序中更多的錯(cuò)誤,在檢測(cè)到錯(cuò)誤后,必須以合適的方式更多的錯(cuò)誤,在檢測(cè)
22、到錯(cuò)誤后,必須以合適的方式進(jìn)行錯(cuò)誤處理。進(jìn)行錯(cuò)誤處理。error37小結(jié):小結(jié):編譯器編譯器的各個(gè)的各個(gè)階段階段源程序源程序詞法分析器詞法分析器錯(cuò)錯(cuò)誤誤處處理理器器符符號(hào)號(hào)管管理理表表語(yǔ)法分析器語(yǔ)法分析器語(yǔ)義分析器語(yǔ)義分析器中間代碼生成器中間代碼生成器代碼優(yōu)化器代碼優(yōu)化器代碼生成器代碼生成器38編譯的前端和后端編譯的前端和后端 前端包括詞法分析、語(yǔ)法分析、語(yǔ)前端包括詞法分析、語(yǔ)法分析、語(yǔ)義分析,以及相關(guān)的錯(cuò)誤處理和符號(hào)表義分析,以及相關(guān)的錯(cuò)誤處理和符號(hào)表的建立的建立 前端依賴(lài)于源程序并在很大程度上前端依賴(lài)于源程序并在很大程度上獨(dú)立于目標(biāo)機(jī)器。獨(dú)立于目標(biāo)機(jī)器。39 后端主要包括代碼優(yōu)化、代碼生成
23、和相后端主要包括代碼優(yōu)化、代碼生成和相關(guān)錯(cuò)誤處理。關(guān)錯(cuò)誤處理。 后端依賴(lài)于目標(biāo)機(jī)器。后端依賴(lài)于目標(biāo)機(jī)器。 后端處理對(duì)象是由前端產(chǎn)生的結(jié)果,即中后端處理對(duì)象是由前端產(chǎn)生的結(jié)果,即中間代碼間代碼 前端生成與平臺(tái)無(wú)關(guān)的字節(jié)碼前端生成與平臺(tái)無(wú)關(guān)的字節(jié)碼 后端是由與平臺(tái)有關(guān)的解釋器對(duì)所生成后端是由與平臺(tái)有關(guān)的解釋器對(duì)所生成的字節(jié)碼文件進(jìn)行解釋執(zhí)行的字節(jié)碼文件進(jìn)行解釋執(zhí)行java語(yǔ)言的編譯采用的是前端后端方式。語(yǔ)言的編譯采用的是前端后端方式。編譯程序的組織編譯程序的組織 編譯程序的遍編譯程序的遍(passes / phases)- 對(duì)一種代碼形式從頭到尾掃描一遍對(duì)一種代碼形式從頭到尾掃描一遍- 將一個(gè)代碼
24、空間變換到另一個(gè)代碼空間將一個(gè)代碼空間變換到另一個(gè)代碼空間- 代碼空間代碼空間 = 代碼代碼 + 符號(hào)表符號(hào)表 + 其他有用信息其他有用信息 編譯程序的組織取決于各遍的組織編譯程序的組織取決于各遍的組織- 單遍單遍編譯程序,編譯程序,多遍多遍編譯程序編譯程序- 多個(gè)遍之間有邏輯上的先后關(guān)系多個(gè)遍之間有邏輯上的先后關(guān)系- 多個(gè)遍的實(shí)現(xiàn)可采用順序結(jié)構(gòu)或并發(fā)結(jié)構(gòu)多個(gè)遍的實(shí)現(xiàn)可采用順序結(jié)構(gòu)或并發(fā)結(jié)構(gòu) (后者不常用)(后者不常用)編譯程序的組織編譯程序的組織 例:一個(gè)以語(yǔ)法、語(yǔ)義分析程序?yàn)橹行牡睦阂粋€(gè)以語(yǔ)法、語(yǔ)義分析程序?yàn)橹行牡?單遍編譯程序單遍編譯程序組織組織source programtarget
25、 program語(yǔ)法、語(yǔ)義語(yǔ)法、語(yǔ)義分析程序分析程序詞法分詞法分析程序析程序代碼生代碼生成程序成程序編譯程序的伙伴程序編譯程序的伙伴程序 解釋程序解釋程序(interpreter)- 不產(chǎn)生目標(biāo)程序文件不產(chǎn)生目標(biāo)程序文件- 不區(qū)別翻譯階段和執(zhí)行階段不區(qū)別翻譯階段和執(zhí)行階段- 翻譯源程序的每條語(yǔ)句后直接執(zhí)行翻譯源程序的每條語(yǔ)句后直接執(zhí)行- 程序執(zhí)行期間一直有解釋程序守候程序執(zhí)行期間一直有解釋程序守候- 常用于實(shí)現(xiàn)虛擬機(jī)常用于實(shí)現(xiàn)虛擬機(jī) 比較比較編譯程序和解釋程序編譯程序和解釋程序源程序源程序編譯程序編譯程序目標(biāo)程序目標(biāo)程序輸入輸入目標(biāo)程序目標(biāo)程序輸出輸出解釋程序解釋程序輸出輸出輸入輸入源程序源程序 預(yù)處理程序預(yù)處理程序(preprocessor)- 支持宏定義支持宏定義(macro definition) 如c源程序中 #define 行的處理- 支持文件包含支持文件包含(file inclusion) 如c源程序中 #include 行的處理- 支持其他更復(fù)雜的源程序擴(kuò)展信息支持其他更復(fù)雜
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)年級(jí)組長(zhǎng)個(gè)人工作計(jì)劃
- 大班下學(xué)期社會(huì)教案《戶外活動(dòng)計(jì)劃及總結(jié)》
- 計(jì)劃生育家庭獎(jiǎng)勵(lì)扶助年終總結(jié)
- 化工企業(yè)2025年上半年工作總結(jié)及下半年年工作計(jì)劃
- 員工年度工作總結(jié)及明年工作計(jì)劃的內(nèi)容
- 婦幼醫(yī)院某年年度工作計(jì)劃
- 學(xué)校2025年消防安全工作計(jì)劃
- 《大學(xué)英語(yǔ)聽(tīng)力應(yīng)用教程(第1冊(cè))》課件-Unit 2 Private Schools
- 工會(huì)勞動(dòng)合同法題目
- 《ERP的成本管理》課件
- 娛樂(lè)行業(yè)虛擬現(xiàn)實(shí)主題公園建設(shè)方案
- 公路工程合同糾紛處理與法律適用考核試卷
- 股權(quán)合作協(xié)議范本三篇
- 2023年四川省眉山市公開(kāi)招聘警務(wù)輔助人員(輔警)筆試專(zhuān)項(xiàng)訓(xùn)練題試卷(2)含答案
- CFA固定收益證券知到智慧樹(shù)期末考試答案題庫(kù)2024年秋首都經(jīng)濟(jì)貿(mào)易大學(xué)
- 2024-2030年中國(guó)成品油行業(yè)深度調(diào)查及投資可行性研究報(bào)告
- 光伏項(xiàng)目達(dá)標(biāo)投產(chǎn)實(shí)施細(xì)則-施工
- 2023年黑龍江省齊齊哈爾市龍沙區(qū)煙草專(zhuān)賣(mài)局公務(wù)員考試《行政職業(yè)能力測(cè)驗(yàn)》歷年真題及詳解
- 噴涂質(zhì)量協(xié)議書(shū)(2篇)
- 統(tǒng)編版(2024)七年級(jí)上冊(cè)道德與法治第三單元《珍愛(ài)我們的生命》測(cè)試卷(含答案)
- 事故隱患內(nèi)部舉報(bào)獎(jiǎng)勵(lì)制度
評(píng)論
0/150
提交評(píng)論