編譯程序構(gòu)造原理和實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、編譯原理及實(shí)現(xiàn)技術(shù),計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院申春課件網(wǎng)址:cc.jlu.edu.cn->課程資源->課程總覽->計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院->編譯原理與實(shí)現(xiàn),2,編譯程序及功能 編譯程序的邏輯結(jié)構(gòu) 編譯程序的實(shí)現(xiàn)途徑 課程學(xué)習(xí)的意義和學(xué)習(xí)方法,第一章 編譯引論,3,1.1 編譯程序及功能,編譯程序:(Compiler,compiling program)也稱(chēng)為編譯器,是指把用高級(jí)程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的源程序,翻譯成

2、等價(jià)的機(jī)器語(yǔ)言格式目標(biāo)程序的翻譯程序。,4,高級(jí)語(yǔ)言程序的處理過(guò)程,源程序文件(.c),預(yù)處理器,標(biāo)準(zhǔn)源程序文件(.i),編譯程序,目標(biāo)匯編代碼(.asm,.s),匯編程序,可重定位的目標(biāo)機(jī)器代碼(.obj,.o),連接/裝配程序,絕對(duì)機(jī)器代碼(.exe, .out),編輯器,,,,,,,,,,5,1.2 程序設(shè)計(jì)語(yǔ)言的發(fā)展,機(jī)器語(yǔ)言:能夠被計(jì)算機(jī)的硬件系統(tǒng)直接執(zhí)行的機(jī)器指令序列,如“1011011000000000”。匯編語(yǔ)言

3、:將硬件指令用一些助記符表示,即符號(hào)化的機(jī)器語(yǔ)言,如“ADD AX ,15”。高級(jí)語(yǔ)言:模仿便于理解的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言,采用一組形式規(guī)則來(lái)描述的人工語(yǔ)言。,,,6,1.3 高級(jí)語(yǔ)言的幾種執(zhí)行方式,1.編譯方式:源語(yǔ)言為高級(jí)語(yǔ)言,目標(biāo)語(yǔ)言是低級(jí)語(yǔ)言(匯編或機(jī)器語(yǔ)言)的翻譯程序。,7,1.3 高級(jí)語(yǔ)言的幾種執(zhí)行方式,2.解釋方式:對(duì)源程序直接逐句地分析執(zhí)行。解釋器相當(dāng)于源程序的抽象執(zhí)行機(jī),是語(yǔ)言的實(shí)現(xiàn)系統(tǒng)。,8,3.語(yǔ)言的轉(zhuǎn)換執(zhí)行方

4、式:將A語(yǔ)言程序轉(zhuǎn)換為B語(yǔ)言程序,用B語(yǔ)言已有的編譯器去編譯執(zhí)行。(同級(jí)程序設(shè)計(jì)語(yǔ)言),1.3 高級(jí)語(yǔ)言的幾種執(zhí)行方式,編譯、解釋,A語(yǔ)言程序,轉(zhuǎn)換程序,B語(yǔ)言程序,運(yùn)行結(jié)果,9,1.4 編譯程序的邏輯結(jié)構(gòu),10,依據(jù)語(yǔ)言的詞法規(guī)則,掃描源程序的字符序列,識(shí)別每 一個(gè)單詞及其種類(lèi),并將其表示成所謂的機(jī)內(nèi)表示TOKEN記號(hào)形式。,詞法分析(Lexical Analysis),for(i=1;i<30;i++),單詞種類(lèi): 關(guān)鍵

5、字: if、then、for、while等; 標(biāo)識(shí)符; 常量; 運(yùn)算符 特殊符 分界符: 標(biāo)點(diǎn)符號(hào)、 左右括號(hào)等等.,,,, ,11,語(yǔ)法分析(Syntax Analysis) 依據(jù)語(yǔ)言的語(yǔ)法規(guī)則,將單詞分解成各類(lèi)語(yǔ)法短語(yǔ)(可表示為語(yǔ)法樹(shù)),確定整個(gè)輸入串是否構(gòu)成一個(gè)語(yǔ)法上正確

6、的程序。,+,:=,*,賦值語(yǔ)句,表達(dá)式,表達(dá)式,標(biāo)識(shí)符,,表達(dá)式,標(biāo)識(shí)符,first,,,表達(dá)式,標(biāo)識(shí)符,count,,常數(shù),10,,,表達(dá)式,,sum:= first + count * 10,1. ::= 標(biāo)識(shí)符:=2. ::= +3. ::= *4. ::= ()5. ::= 標(biāo)識(shí)符6. ::= 常數(shù),sum,12,語(yǔ)義分析(Semantic Analysis) 檢查源程序有無(wú)語(yǔ)義錯(cuò)誤,

7、為代碼生成階段收集信息。(標(biāo)識(shí)符是否聲明、類(lèi)型檢查、強(qiáng)制類(lèi)型轉(zhuǎn)換、下標(biāo)越界檢查等),int i, a[20]=0;for(i=1; i<30; i++) a[10]=a[10]+i;,13,生成如下四元式形式的中間代碼序列:1、(int-to-real, 10 , - ,t1 )2、(*, count , t1 ,t2 )3、(+, first , t2 ,t3 )4、(:=, t3

8、,- , sum ),例: sum:=first + count * 10,中間代碼生成(Intermediate Code Generation) 為便于對(duì)程序的優(yōu)化、移植和修改,將源程序轉(zhuǎn)換成一種稱(chēng)為中間代碼的內(nèi)部表示形式。中間代碼是一種簡(jiǎn)單的、含義明確的記號(hào)系統(tǒng),例如四元式(運(yùn)算符,對(duì)象1,對(duì)象2,結(jié)果)。,14,中間代碼優(yōu)化( Intermediate Code Optimization) 在不改變?cè)闯绦?/p>

9、語(yǔ)義的前提下變換或改造中間代碼,使生成的目標(biāo)代碼更為高效,即縮短運(yùn)行時(shí)間或節(jié)省存儲(chǔ)空間。,1、(int-to-real, 10 , - ,t1 )2、(*, count , t1 ,t2 ),,(*, count , 10.0 ,t2 ),15,目標(biāo)代碼生成(Code Generation) 中間代碼變換為特定機(jī)器上的機(jī)器指令代碼(絕對(duì)指令代碼或可重定位的指令代碼)或匯編指令代碼。例:sum:=first + count *

10、10 生成如下匯編代碼: 1. MOV count , R1 2. MULT R1 , #10.0 3. MOV first , R2 4. ADD R1

11、, R2 5. MOV R1, sum,四元式中間代碼序列:1、(*, count , 10.0 ,t2 )2、(+, first , t2 ,t3 )3、(:=, t3 ,- , sum ),表格管理(Symbol-Table Management) 較大的編譯程序用到很多表格,為了合理地管理表格(構(gòu)造、查找、更新),很多編譯程序設(shè)立一些專(zhuān)門(mén)子程

12、序(稱(chēng)為表格管理程序)負(fù)責(zé)管理表格。 錯(cuò)誤處理(Error Detection and Reporting) 編譯程序各個(gè)階段還存在著錯(cuò)誤處理模塊,當(dāng)有錯(cuò)誤出現(xiàn)時(shí),由相應(yīng)的錯(cuò)誤處理模塊給出解決方案,使得編譯器能夠繼續(xù)進(jìn)行下去。詞法和語(yǔ)法錯(cuò)誤檢查集中一次完成,而語(yǔ)義錯(cuò)誤檢查要分散在語(yǔ)法分析以后的各個(gè)階段。,17,遍 (Pass)所謂“遍”就是對(duì)源程序或源程序的中間表示形式從頭到尾掃描一次,并作加工處理,生成新的中間結(jié)果或目標(biāo)程序。,

13、18,1.5 編譯程序?qū)崿F(xiàn)方法,轉(zhuǎn)換法:將A語(yǔ)言程序轉(zhuǎn)換成B語(yǔ)言的程序,再利用B語(yǔ)言的編譯器實(shí)現(xiàn)A語(yǔ)言。自展法:實(shí)際上就是用低級(jí)語(yǔ)言先實(shí)現(xiàn)一個(gè)簡(jiǎn)單的編譯器,然后用這個(gè)編譯器的語(yǔ)言再去編寫(xiě)一個(gè)更高級(jí)的編譯器,這個(gè)新編譯器是舊編譯器的擴(kuò)展的過(guò)程。 移植法:修改目標(biāo)代碼或者修改編譯程序的后端。 工具法:Lex、Yacc等工具生成語(yǔ)法分析程序。(軟件自動(dòng)化研究成果),19,加深對(duì)高級(jí)語(yǔ)言的工作原理的理解; 提高設(shè)計(jì)大型軟件的能力;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論