編譯原理及實現(xiàn)技術(shù)課件:第一章 編譯引論_第1頁
編譯原理及實現(xiàn)技術(shù)課件:第一章 編譯引論_第2頁
編譯原理及實現(xiàn)技術(shù)課件:第一章 編譯引論_第3頁
編譯原理及實現(xiàn)技術(shù)課件:第一章 編譯引論_第4頁
編譯原理及實現(xiàn)技術(shù)課件:第一章 編譯引論_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、編譯原理及實現(xiàn)技術(shù)課程內(nèi)容介紹編譯器基本構(gòu)造原理基本實現(xiàn)方法基本處理技術(shù)介紹理論知識形式語言自動機理論強調(diào)形式化描述技術(shù)抽象思想強調(diào)對編譯原理宏觀理解對編譯處理技術(shù)的宏觀理解課程意義掌握編譯程序的構(gòu)造原理和實現(xiàn)技術(shù)。深入對程序設(shè)計語言的理解;(片面vs全面)提高軟件開發(fā)能力;(同一功能的不同實現(xiàn))提高元級程序設(shè)計能力;(編譯器的設(shè)計實現(xiàn))增強形式化、抽象化能力;(問題形式化)編譯技術(shù)的廣泛的應(yīng)用。嵌入式系統(tǒng)(受限資源利用)ERP二次開發(fā)(三分之一需要修改)冗余代碼分析(變量調(diào)用、閑置函數(shù))第一章 編譯引論程序設(shè)計語言程序設(shè)計環(huán)境中的編譯器編譯程序的結(jié)構(gòu)編譯程序的設(shè)計與實現(xiàn)1 程序設(shè)計語言與編譯

2、程序程序語言的發(fā)展高級語言的實現(xiàn)方式1.1 程序設(shè)計語言的發(fā)展機器語言:能夠被計算機的硬件系統(tǒng)直接執(zhí)行的指令程序,如“0001000101”。匯編語言:將硬件指令用一些助記符表示,即符號化的機器語言,如“ADD,MOV”。高級語言:從程序員的角度出發(fā),對匯編語言進一步抽象,使用便于理解的“自然語言”表述。 機器語言 匯編語言 高級語言 翻譯程序Translator1.2 高級語言的實現(xiàn)方式匯編程序Assembler編譯程序Compiler1.2.1 解釋方式解釋方式:接受用程序語言(源語言)編寫的程序(源程序),然后直接解釋執(zhí)行源程序。解釋器相當(dāng)于源程序的抽象執(zhí)行機,是語言的實現(xiàn)系統(tǒng)。 解釋程

3、序源程序輸入數(shù)據(jù)計算結(jié)果(*.bas/*.java)1.2.2 編譯方式編譯方式:源語言為高級語言,目標(biāo)語言是低級語言(匯編或機器語言)的翻譯程序。 源程序目標(biāo)程序(*.C/*.PAS)(*.OBJ/*.EXE)編譯程序1.2.3 轉(zhuǎn)換方式轉(zhuǎn)換方式:將A語言程序轉(zhuǎn)換為B語言程序,用B語言已有的編譯器去編譯執(zhí)行。(同級程序設(shè)計語言) 編譯、解釋A語言程序轉(zhuǎn)換程序B語言程序源程序目標(biāo)程序(*.C/*.PAS)(*.OBJ/*.EXE)解釋程序源程序輸入數(shù)據(jù)計算結(jié)果(*.bas/*.java)A語言程序轉(zhuǎn)換程序編譯程序B語言程序2 編譯程序和程序設(shè)計環(huán)境典型IDE編譯器在IDE中的位置編輯器:除了一

4、般文本編輯器的功能外,還可具有對正在編輯的文本進行分析、提示,能自動地提供關(guān)鍵字和與其匹配的關(guān)鍵字 等功能。預(yù)處理器:工作包括刪除源程序中的注釋、執(zhí)行宏替換以及包含文件的嵌入等。編譯器簡約而不簡單連接程序:將不同的目標(biāo)文件中編譯或匯編的代碼集中到一個可執(zhí)行文件中,并將目標(biāo)和標(biāo)準(zhǔn)庫函數(shù)的代碼以及計算機的操作系統(tǒng)提供的資源連接在一起。裝入程序:把程序加載到內(nèi)存儲器中,以便執(zhí)行。 調(diào)試程序:檢查編譯了的程序中的錯誤。 3 編譯程序的邏輯結(jié)構(gòu)編譯器的結(jié)構(gòu)各組成部分的功用實例編譯器 3.1 編譯程序的邏輯結(jié)構(gòu)圖詞法分析語法分析語義分析源程序中間代碼生成中間代碼優(yōu)化目標(biāo)代碼生成目標(biāo)程序出錯處理表格管理 詞

5、法分析Lexical Analysis(Scanner/Tokenizer) 掃描源程序的字符串,依循語言的詞法規(guī)則,識別每一個有集體含義的子串,并將其表示成所謂的機內(nèi)表示記號形式(Token)。語法分析 Syntax Analysis(Parser)依據(jù)語言的語法規(guī)則,將單詞的Token序列分解成各類語法短語(可表示為語法樹),確定整個輸入串是否構(gòu)成一個語法上正確的程序。語義分析 Semantic Analysis 檢查源程序有無語義錯誤,為代碼生成階段收集信息。(類型檢查、強制類型轉(zhuǎn)換、下標(biāo)越界檢查等)中間代碼生成 Intermediate Code Generation 將源程序轉(zhuǎn)換成一

6、種稱為中間代碼的內(nèi)部表示形式。中間代碼是一種簡單的、含義明確的記號系統(tǒng),例如四元式(運算符,對象1,對象2,結(jié)果)。中間代碼優(yōu)化 Code Optimization 變換或改造中間代碼,生成的目標(biāo)代碼更為高效,即節(jié)省時間和空間。目標(biāo)代碼生成 Target Code Generation 中間代碼變換為特定機器上的絕對指令代碼,或可重定位的指令代碼或匯編指令代碼。 表格管理 Table Management 為了合理的管理(構(gòu)造、查找、更新)表格(符號表、類型信息表),設(shè)立一些專門子程序稱為表格管理程序。 錯誤處理 Error Handler 各個階段還存在著錯誤處理模塊,當(dāng)有錯誤出現(xiàn)時,由相應(yīng)

7、的錯誤處理模塊給出解決方案,使得編譯器能夠繼續(xù)進行下去。3.2 Example of a piece of C code: real sum, first;int count;sum = first + count * 10;Out of the scannerrealReservedsumIdentifierfirstIdentifier;SemicolonintReservedcountIdentifiersumIdentifier=Equalfirst Identifier+AddOut of the parserAssignmentIdentifierEqualExpressionsu

8、m=ExpressionAddExpressionIdentifier+IdentifierMulVariablefirstcount*10Out of the semantic analyzer=Id1+Id2*Id3int_to_real10Out of the intermediate code generator(int_to_real,10,-,t1)(*,id3,t1,t2)(+,id2,t2,t3)(=,t3,-,id1)Out of the optimizer(*,10.0,id3,t1)(+,t1,id2,id1)Out of the target code generatorMOVid3,R1MUL#10.0,R1MOVid2,R2ADDR2,R1MOVR1,id1 4 編譯程序的設(shè)計與實現(xiàn)4.1 編譯程序設(shè)計分遍 根據(jù)需求一至幾十遍都有要點準(zhǔn)確理解源語言確定對編譯的要求(可能導(dǎo)致過程差異)理解目標(biāo)機(即目標(biāo)程序的細(xì)節(jié))形式化描述(正則表達式、自動機)具體設(shè)計4.2 實現(xiàn)方法轉(zhuǎn)換法:將A語言程序轉(zhuǎn)換成B語言的程序,再利用B語言的編譯器實現(xiàn)A語言。移植

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論