版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第一章 引 論,第一章 引論,1.1 什么叫編譯程序 編譯程序:是指這樣的程序,它能夠把某種語言的程序轉(zhuǎn)換成另一種語言的程序,而后者與前者在邏輯上是等價的。如果源語言是諸如FORTRAN、Pascal、C、Ada、Smalltalk或Java這樣的“高級語言”,而目標語言如匯編語言之類的“低級語言”這樣的翻譯程序則稱之為編譯程序。 本課程主要介紹設(shè)計和構(gòu)造編譯程序的基本原理和方法。,第一章 引 論,編譯程序又簡稱為“編譯器”,第一個編譯器是20世界50年代的后期出現(xiàn)的FORTRAN語言編譯器。 同樣,解釋程序又簡稱為“解釋器”,但是在概念上與編譯器有明顯區(qū)別: 編譯程序是源轉(zhuǎn)換系統(tǒng),而解釋程序
2、是源程序的一個執(zhí)行系統(tǒng)。 編譯程序的結(jié)果是得到等價源程序的某種目標機程序,而解釋程序的結(jié)果是得到源程序的執(zhí)行結(jié)果,即它相當于執(zhí)行源程序的抽象機。,第一章 引 論,注意編譯程序與解釋程序的區(qū)別,一個語言的解釋程序是這樣的程序:它以該語言寫的源程序作為輸入,但不產(chǎn)生目標程序,而是邊解釋邊執(zhí)行源程序本身。 術(shù)語“編譯”的內(nèi)涵是實現(xiàn)從源語言表示的算法向目標語言表示的算法的等價變換。,第一章 引 論,高級語言分類及其編譯: 過程式語言:FORTRAN Pascal Ada C (特點:面向驅(qū)動,面向語句,由系列的語句組成) 函數(shù)式語言:LISP ML ASL (注重程序表示的功能,而不是一個語句接一個語
3、句的執(zhí)行) 從已有的函數(shù)出發(fā)構(gòu)造更復(fù)雜的函數(shù)。 邏輯式語言:PROLOG (檢查一定的條件,當滿足時,則執(zhí)行適當?shù)膭幼?。?對象式語言:SMALLTALK C+ (封裝性、繼承性、多態(tài)性),第一章 引 論,這里主要研究過程式語言的編譯,高級語言分類及其編譯: 過程式語言:FORTRAN Pascal ADA C 函數(shù)式語言:LISP ML ASL 邏輯式語言:PROLOG 對象式語言:SMALLTALK C+ 函數(shù)式語言與邏輯式語言,特別是邏輯式語言,其編譯技術(shù)與過程式語言的差別比較大;因?qū)ο笫秸Z言的載體基本上是過程式的,所以其編譯程序也不難理解。,第一章 引 論,1.2 編譯過程概述 編譯程
4、序的工作,從輸入源程序開始到輸出目標程序為止的整個過程,是非常復(fù)雜的。 掌握編譯過程的五個基本階段,是我們學習編譯原理課程的基本內(nèi)容,把編譯的五個基本階段與英譯中的五個步驟相比較,有利于對編譯過程的理解:,第一章 引 論,英譯與編譯的比較,1。識別出句子中的一個個單字 2。分析句子的語法結(jié)構(gòu) 3。初步翻譯句子的含意 4。譯文修飾 5。寫出最后譯文,1。詞法分析 2。語法分析 3。語義分析中間代碼生成 4。優(yōu)化 5。目標代碼生成,第一章 引 論,源程序是以文本文件方式存在,注意:程序總是以字符串的方式存在。,第一章 引 論,1.2.1 詞法分析 輸入源程序,對構(gòu)成源程序的字符串進行掃描和分解,識
5、別出一個個單詞(也稱單詞符號,或簡稱符號) 在詞法分析階段工作所依循的是語言的詞法規(guī)則。描述詞法規(guī)則的有效工具是正規(guī)式和有限自動機。,第一章 引 論,1.2.1 詞法分析 什么是單詞 邏輯上相連的一組字符,從語法的角度來看,這些字符所具有的集體含義已不能再區(qū)分了,通常包括:保留字、標識符、界符、算符和常量等,第一章 引 論,例. 考慮下面的一段源程序,var area, radius:real; begin read(radius); area:3.1415926*radius*radius; end. 保留字: var, begin, end, read,real 運算符: *, : 界符:
6、(,),; ,. 標識符: radius, area,第一章 引 論,有關(guān)術(shù)語,詞法分析(lexical analysis or scanning) -The stream of characters making up a source program is read from left to right and grouped into tokens,which are sequences of characters that have a collective meaning. 單詞-token 保留字-reserved word 標識符 -identifier(user-defined
7、 name),第一章 引 論,1.2.2語法分析 語法分析的任務(wù):在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則,把單詞符號分解成各類語法單位(語法范疇),如“短語”、“句子”、 “子句”、“程序段”等。 語法規(guī)則通常用上下文無關(guān)文法描述。 例. 對賦值語句area:3.1415926*radius*radius進行語法分析,第一章 引 論,賦值語句的語法樹,*,第一章 引 論,術(shù)語,語法分析(syntax analysis or parsing) The purpose of syntax analysis is to determine the source programs phrase str
8、ucture.This process is also called parsing.The source program is parsed to check whether it conforms to the source languages syntax,and to construct a suitable representation of its phrase structure. 語法樹(推導樹)(parse tree or derivation tree),第一章 引 論,1.2.3語義分析與中間代碼的產(chǎn)生 對語法分析所識別出的各類語法范疇,分析其含義,并進行初步翻譯(產(chǎn)生中
9、間代碼)。 這一階段通常包括兩方面的工作首先對各種語法范疇進行靜態(tài)語義檢查(如:變量是否定義,類型是否正確等),如果正確則進行另一方面的工作,即進行中間代碼的翻譯。 通常使用屬性文法描述語義規(guī)則,第一章 引 論,1.2.3語義分析與中間代碼的產(chǎn)生 什么是中間代碼 是將源程序轉(zhuǎn)變成的一種內(nèi)部表現(xiàn)形式,是一種結(jié)構(gòu)簡單、含義明確的記號系統(tǒng) 中間代碼的兩種性質(zhì) 容易生成這種中間代碼 容易將它翻譯成目標代碼 主要形式 四元式、三元式、間接三元式、逆波蘭式等,第一章 引 論,中間代碼生成:,如:sum:firstcount10 生成四元式序列: (inttoreal 10 t1 ) ( id3 t1 t2
10、) ( id2 t2 t3) (: t3 id1),運算符,運算對象1,運算對象2,結(jié)果,四元式的形式為: (算符,運算對象1,運算對象2,結(jié)果),id1,id2,id3,t1,t2,t3是臨時變量,第一章 引 論,術(shù)語,語義分析(semantic analysis) The parsed program is further analyzed to determine whether it conforms to the source languages contextual constraints:scope rules, type rules e.g. To relate each ap
11、plied occurrence of an identifier in the source program to the corresponding declaration.,第一章 引 論,1.2.4 優(yōu)化 優(yōu)化的任務(wù)在于對前段產(chǎn)生的中間代碼進行加工,以期在最后階段產(chǎn)生更為高效(省時間和空間)的代碼 優(yōu)化所依循的原則是程序的等價變換規(guī)則 其方法有:公共子表達式的提取、循環(huán)優(yōu)化、刪除無用代碼等。,第一章 引 論,代碼優(yōu)化,主要任務(wù):對中間代碼進行變換,使目標代碼更為高效。(節(jié)省時間和空間) id1:= id2 + id3 * 60 (1)(inttoreal60-t1) (2)( * id
12、3t1t2) (3)( +id2t2t3) (4)( :=t3-id1) 變換 (1) ( *id360.0t1) ( 2)( + id2 t1id1) 例2 見P4,第一章 引 論,1.2.5 目標代碼生成 主要工作 是整個編譯過程的最后一個階段,這一階段的工作是把中間代碼變換成特定目標機器上的絕對指令代碼或可重定向的指令代碼或匯編指令代碼,第一章 引 論,目標代碼生成,(*id360.0t1) (+id2t1id1),MOVid3,R2 MUL#60.0,R2 MOVid2,R1 ADDR2,R1 MOVR1,id1,主要與硬件系統(tǒng)結(jié)構(gòu)和指令含義有關(guān)。,第一章 引 論,1。3 編譯程序的結(jié)
13、構(gòu),表 格 管 理,詞法分析器,語法分析器,語義分析與中間代碼產(chǎn)生,優(yōu)化器,目標代碼生成器,源程序,單詞符號,語法單位,中間代碼,中間代碼,目標代碼,出 錯 處 理,第一章 引 論,我們可以按照上頁的總框圖設(shè)計編譯程序。從圖中我們可以看到除編譯的五個基本階段外,一個完整的編譯程序還應(yīng)包括“表格管理”和“出錯處理”兩部分 1.3.2 表格與表格管理 在編譯程序使用的表格中最重要的是符號表它用來登記源程序中出現(xiàn)的每一個名字以及名子的各種屬性。如一個名字是常量名、變量名,還是過程名等;如果是變量名它的類型又是什麼、所占內(nèi)存是多大、地址是什么等。,第一章 引 論,1.3.3 出錯處理 一個編譯程序不僅
14、能對書寫正確的程序進行編譯,而且應(yīng)能對處現(xiàn)在源程序中的錯誤進行處理。如果源程序有錯,編譯程序應(yīng)設(shè)法發(fā)現(xiàn)錯誤,把有關(guān)錯誤報告給用戶。這部分的工作是由專門的一組程序(叫做處錯處理程序)完程的。,第一章 引 論,1.3.5 編譯前端與后端 前端主要由與源語言有關(guān)但與目標機無關(guān)的那些部分組成。通常包括詞法分析、語法分析、語義分析與中間代碼產(chǎn)生,有的代碼優(yōu)化工作,也可以包括在前端。 后端包括編譯程序中與目標代碼有關(guān)的部分,如與目標機有關(guān)的有關(guān)的優(yōu)化,和目標代碼的生成等。,第一章 引 論,1.3.6 遍 遍 含義:對源語言或等價的中間語言程序從頭到尾地掃描并完成規(guī)定的任務(wù)的過程 分遍的相關(guān)因素 源語言和目
15、標機器的特征、編譯程序的工作環(huán)境 編譯程序模塊的軟件接口,從時間和空 間角度看,多遍編譯 少占內(nèi)存,多耗時間 一遍編譯 多占內(nèi)存,少耗時間,第一章 引 論,1.4 編譯程序與程序設(shè)計環(huán)境 編譯程序無疑是實現(xiàn)高級語言的一個最重要的工具。但支持程序設(shè)計人員進行程序設(shè)計開發(fā)通常還需要其它一些工具:如編輯程序、連接程序、調(diào)試程序等。編譯程序與這些程序設(shè)計工具一起構(gòu)成所謂的程序設(shè)計環(huán)境。 在一個程序設(shè)計環(huán)境中,編譯程序起著中心的作用。連接程序、調(diào)試程序、程序分析等工具直接依賴于編譯程序所產(chǎn)生的結(jié)果,而其它工具的構(gòu)造也常常要用到編譯的原理、方法和技術(shù)。,第一章 引 論,1.5 編譯程序的生成 以前構(gòu)造編譯程序大多是用機器語言或匯編語言作工具的。為了充分發(fā)揮各種不同硬件系統(tǒng)的效率,為了滿足各種不同的具體要求,現(xiàn)在許多人仍然使用這種工具來構(gòu)造編譯程
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年北方工業(yè)大學關(guān)于招聘高鋼中心實驗室科研助理的備考題庫及答案詳解一套
- 2026年中國地質(zhì)大學(武漢)公共管理學院面向海內(nèi)外誠聘英才備考題庫及答案詳解1套
- 2025年常州市體育局下屬事業(yè)單位公開招聘工作人員備考題庫及1套完整答案詳解
- 2026年北京體育大學醫(yī)院(社區(qū)衛(wèi)生服務(wù)中心)合同制人員公開招聘備考題庫帶答案詳解
- 2026年關(guān)于內(nèi)江市部分市本級事業(yè)單位公開選調(diào)工作人員14人的備考題庫及一套參考答案詳解
- 2026年佛岡縣石角鎮(zhèn)公開招聘新城社區(qū)專職網(wǎng)格員備考題庫及完整答案詳解一套
- 2026年廈門一中招聘合同制膠印員備考題庫及參考答案詳解
- 2026年內(nèi)江鑫永凌建設(shè)開發(fā)有限公司招聘工作人員備考題庫帶答案詳解
- 2026年峨山彝族自治縣林業(yè)和草原局公開招聘綜合應(yīng)急救援隊員備考題庫完整答案詳解
- 2026年安溪縣蘆田衛(wèi)生院招聘護士備考題庫及參考答案詳解一套
- 羅茨鼓風機行業(yè)發(fā)展趨勢報告
- 慢性阻塞性肺疾病患者非肺部手術(shù)麻醉及圍術(shù)期管理的專家共識
- 燈謎大全及答案1000個
- 中建辦公商業(yè)樓有限空間作業(yè)專項施工方案
- 急性胰腺炎護理查房課件ppt
- 初三數(shù)學期末試卷分析及中考復(fù)習建議課件
- GB/T 4074.8-2009繞組線試驗方法第8部分:測定漆包繞組線溫度指數(shù)的試驗方法快速法
- 第十章-孤獨癥及其遺傳學研究課件
- 人教版四年級上冊語文期末試卷(完美版)
- 防空警報系統(tǒng)設(shè)計方案
- 酒店管理用水 酒店廚房定額用水及排水量計算表分析
評論
0/150
提交評論