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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

7、的錯(cuò)誤處理模塊給出解決方案,使得編譯器能夠繼續(xù)進(jìn)行下去。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è)計(jì)與實(shí)現(xiàn)4.1 編譯程序設(shè)計(jì)分遍 根據(jù)需求一至幾十遍都有要點(diǎn)準(zhǔn)確理解源語言確定對(duì)編譯的要求(可能導(dǎo)致過程差異)理解目標(biāo)機(jī)(即目標(biāo)程序的細(xì)節(jié))形式化描述(正則表達(dá)式、自動(dòng)機(jī))具體設(shè)計(jì)4.2 實(shí)現(xiàn)方法轉(zhuǎn)換法:將A語言程序轉(zhuǎn)換成B語言的程序,再利用B語言的編譯器實(shí)現(xiàn)A語言。移植

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論