版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理及實(shí)現(xiàn)技術(shù),計算機(jī)科學(xué)與技術(shù)學(xué)院申春課件網(wǎng)址:cc.jlu.edu.cn->課程資源->課程總覽->計算機(jī)科學(xué)與技術(shù)學(xué)院->編譯原理與實(shí)現(xiàn),2,編譯程序及功能 編譯程序的邏輯結(jié)構(gòu) 編譯程序的實(shí)現(xiàn)途徑 課程學(xué)習(xí)的意義和學(xué)習(xí)方法,第一章 編譯引論,3,1.1 編譯程序及功能,編譯程序:(Compiler,compiling program)也稱為編譯器,是指把用高級程序設(shè)計語言書寫的源程序,翻譯成
2、等價的機(jī)器語言格式目標(biāo)程序的翻譯程序。,4,高級語言程序的處理過程,源程序文件(.c),預(yù)處理器,標(biāo)準(zhǔn)源程序文件(.i),編譯程序,目標(biāo)匯編代碼(.asm,.s),匯編程序,可重定位的目標(biāo)機(jī)器代碼(.obj,.o),連接/裝配程序,絕對機(jī)器代碼(.exe, .out),編輯器,,,,,,,,,,5,1.2 程序設(shè)計語言的發(fā)展,機(jī)器語言:能夠被計算機(jī)的硬件系統(tǒng)直接執(zhí)行的機(jī)器指令序列,如“1011011000000000”。匯編語言
3、:將硬件指令用一些助記符表示,即符號化的機(jī)器語言,如“ADD AX ,15”。高級語言:模仿便于理解的自然語言和數(shù)學(xué)語言,采用一組形式規(guī)則來描述的人工語言。,,,6,1.3 高級語言的幾種執(zhí)行方式,1.編譯方式:源語言為高級語言,目標(biāo)語言是低級語言(匯編或機(jī)器語言)的翻譯程序。,7,1.3 高級語言的幾種執(zhí)行方式,2.解釋方式:對源程序直接逐句地分析執(zhí)行。解釋器相當(dāng)于源程序的抽象執(zhí)行機(jī),是語言的實(shí)現(xiàn)系統(tǒng)。,8,3.語言的轉(zhuǎn)換執(zhí)行方
4、式:將A語言程序轉(zhuǎn)換為B語言程序,用B語言已有的編譯器去編譯執(zhí)行。(同級程序設(shè)計語言),1.3 高級語言的幾種執(zhí)行方式,編譯、解釋,A語言程序,轉(zhuǎn)換程序,B語言程序,運(yùn)行結(jié)果,9,1.4 編譯程序的邏輯結(jié)構(gòu),10,依據(jù)語言的詞法規(guī)則,掃描源程序的字符序列,識別每 一個單詞及其種類,并將其表示成所謂的機(jī)內(nèi)表示TOKEN記號形式。,詞法分析(Lexical Analysis),for(i=1;i<30;i++),單詞種類: 關(guān)鍵
5、字: if、then、for、while等; 標(biāo)識符; 常量; 運(yùn)算符 特殊符 分界符: 標(biāo)點(diǎn)符號、 左右括號等等.,,,, ,11,語法分析(Syntax Analysis) 依據(jù)語言的語法規(guī)則,將單詞分解成各類語法短語(可表示為語法樹),確定整個輸入串是否構(gòu)成一個語法上正確
6、的程序。,+,:=,*,賦值語句,表達(dá)式,表達(dá)式,標(biāo)識符,,表達(dá)式,標(biāo)識符,first,,,表達(dá)式,標(biāo)識符,count,,常數(shù),10,,,表達(dá)式,,sum:= first + count * 10,1. ::= 標(biāo)識符:=2. ::= +3. ::= *4. ::= ()5. ::= 標(biāo)識符6. ::= 常數(shù),sum,12,語義分析(Semantic Analysis) 檢查源程序有無語義錯誤,
7、為代碼生成階段收集信息。(標(biāo)識符是否聲明、類型檢查、強(qiáng)制類型轉(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) 為便于對程序的優(yōu)化、移植和修改,將源程序轉(zhuǎn)換成一種稱為中間代碼的內(nèi)部表示形式。中間代碼是一種簡單的、含義明確的記號系統(tǒng),例如四元式(運(yùn)算符,對象1,對象2,結(jié)果)。,14,中間代碼優(yōu)化( Intermediate Code Optimization) 在不改變源程序
9、語義的前提下變換或改造中間代碼,使生成的目標(biāo)代碼更為高效,即縮短運(yùn)行時間或節(jié)省存儲空間。,1、(int-to-real, 10 , - ,t1 )2、(*, count , t1 ,t2 ),,(*, count , 10.0 ,t2 ),15,目標(biāo)代碼生成(Code Generation) 中間代碼變換為特定機(jī)器上的機(jī)器指令代碼(絕對指令代碼或可重定位的指令代碼)或匯編指令代碼。例: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è)立一些專門子程
12、序(稱為表格管理程序)負(fù)責(zé)管理表格。 錯誤處理(Error Detection and Reporting) 編譯程序各個階段還存在著錯誤處理模塊,當(dāng)有錯誤出現(xiàn)時,由相應(yīng)的錯誤處理模塊給出解決方案,使得編譯器能夠繼續(xù)進(jìn)行下去。詞法和語法錯誤檢查集中一次完成,而語義錯誤檢查要分散在語法分析以后的各個階段。,17,遍 (Pass)所謂“遍”就是對源程序或源程序的中間表示形式從頭到尾掃描一次,并作加工處理,生成新的中間結(jié)果或目標(biāo)程序。,
13、18,1.5 編譯程序?qū)崿F(xiàn)方法,轉(zhuǎn)換法:將A語言程序轉(zhuǎn)換成B語言的程序,再利用B語言的編譯器實(shí)現(xiàn)A語言。自展法:實(shí)際上就是用低級語言先實(shí)現(xiàn)一個簡單的編譯器,然后用這個編譯器的語言再去編寫一個更高級的編譯器,這個新編譯器是舊編譯器的擴(kuò)展的過程。 移植法:修改目標(biāo)代碼或者修改編譯程序的后端。 工具法:Lex、Yacc等工具生成語法分析程序。(軟件自動化研究成果),19,加深對高級語言的工作原理的理解; 提高設(shè)計大型軟件的能力;
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 編譯原理課程設(shè)計報告-編譯程序構(gòu)造
- 編譯原理及編譯程序構(gòu)造部分課后答案張莉楊海燕編著
- 編譯原理課程設(shè)計報告---pl0編譯程序改進(jìn)及完善
- CML指針類型編譯程序的設(shè)計與實(shí)現(xiàn).pdf
- 第二章pl0編譯程序-
- 基于單片機(jī)的PLC編譯程序設(shè)計研究.pdf
- 本項(xiàng)目源代碼和已編譯程序以及開發(fā)文檔的下載地址.doc
- 本項(xiàng)目源代碼和已編譯程序以及開發(fā)文檔的下載地址.doc
- 編譯原理實(shí)驗(yàn)報告-詞法分析程序的設(shè)計與實(shí)現(xiàn)等
- 編譯原理課程設(shè)計---小型程序設(shè)計語言編譯器的設(shè)計與實(shí)現(xiàn)
- 編譯原理課程設(shè)計--- 詞法分析程序
- 編譯原理課程設(shè)計-lr分析器總控程序的實(shí)現(xiàn)
- 編譯原理課程設(shè)計報告--編譯器實(shí)現(xiàn)
- 編譯原理課程設(shè)計---編譯器的實(shí)現(xiàn)
- 編譯原理課程設(shè)計--c語言編譯器實(shí)現(xiàn)
- 編譯原理課程設(shè)計--c語言編譯器實(shí)現(xiàn)
- c語言編譯器實(shí)現(xiàn)-編譯原理課程設(shè)計
- 編譯程序設(shè)計原理 第二版 (金成植 金英 著) 高等教育出版社 8 課后答案
- 編譯原理
- 編譯原理課程設(shè)計---c語言編譯器的實(shí)現(xiàn)
評論
0/150
提交評論