版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
編譯原理引論授課:胡靜2/4/20232004年12月28日1編譯原理教材及參考書(shū)教材:《程序設(shè)計(jì)語(yǔ)言編譯原理(第3版)》,國(guó)防工業(yè)出版社,陳火旺等編著主要參考資料編譯原理(CompilersPrinciples,Techniques,andTools)出版社:機(jī)械工業(yè)出版社《編譯原理》,清華大學(xué)出版社,呂映芝、張素琴、蔣維杜編著《編譯器工程》——《DesignaCompiler》,機(jī)械工業(yè)出版社,KeithD.Cooper、LindaTorczon著;馮速譯2/4/20232編譯原理相關(guān)課程課程基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)計(jì)算機(jī)原理和匯編語(yǔ)言高級(jí)程序設(shè)計(jì)語(yǔ)言后續(xù)課程編譯技術(shù)2/4/20233編譯原理第一章概論編譯的起源:程序設(shè)計(jì)語(yǔ)言的發(fā)展基本概念編譯過(guò)程和編譯程序的構(gòu)造2/4/20234編譯原理程序設(shè)計(jì)語(yǔ)言的發(fā)展2/4/20235編譯原理基本概念低級(jí)語(yǔ)言(LowlevelLanguage)字位碼、機(jī)器語(yǔ)言、匯編語(yǔ)言特點(diǎn):與特定的機(jī)器有關(guān),功效高,但使用復(fù)雜、繁瑣、費(fèi)時(shí)、易出錯(cuò)高級(jí)語(yǔ)言Fortran、Pascal、C語(yǔ)言等特點(diǎn):不依賴具體機(jī)器,移植性好、對(duì)用戶要求低、易使用、易維護(hù)等。
2/4/20236編譯原理基本概念2/4/20237編譯原理基本概念2/4/20238編譯原理源程序的編譯和運(yùn)行2/4/20239編譯原理源程序的解釋運(yùn)行2/4/202310編譯原理源程序的編譯-解釋運(yùn)行2/4/202311編譯原理編譯器和解釋器編譯器和解釋器的比較相同點(diǎn)(執(zhí)行相同的任務(wù)):檢查輸入程序并確定這個(gè)程序是否一個(gè)有效程序建立一個(gè)內(nèi)部模型來(lái)刻畫輸入程序的結(jié)構(gòu)和含義決定在執(zhí)行期間值的存放位置不同點(diǎn)(執(zhí)行的行為不同):編譯器以一個(gè)可執(zhí)行程序的描述作為輸入,以另一個(gè)等價(jià)的可執(zhí)行程序的描述作為輸出。解釋器以一個(gè)可執(zhí)行程序的描述作為輸入,以執(zhí)行這一可執(zhí)行程序描述的結(jié)果作為輸出。2/4/202312編譯原理舉例典型的編譯器:gcc,javac非典型的編譯器:latex(documentcompiler):TransformsaLaTeXdocumentintoDVIprintingcommandsInputinformation=document(notprogram)解釋器:f2c:Fortran-to-Ctranslator(bothhigh-level)latex2html:LaTeX-to-HTML(bothdocuments)2/4/202313編譯原理我們?yōu)槭裁葱枰幾g器編寫、調(diào)試、維護(hù)和理解用裝配語(yǔ)言(assemblelanguage)編寫的程序是很困難的自從第一個(gè)編譯器出現(xiàn)之后,軟件產(chǎn)品的數(shù)量有了巨大的增加。但是仍然有一些情況需要用裝配語(yǔ)言編寫例如,訪問(wèn)某些底層的機(jī)器資源(設(shè)備驅(qū)動(dòng))這些代碼規(guī)模一般較小,還是需要編譯器去處理其他的應(yīng)用2/4/202314編譯原理編譯器構(gòu)造法的研究目的好的編譯器是計(jì)算機(jī)科學(xué)的縮影包含大量的技術(shù):貪婪算法(寄存器分配)、啟發(fā)式搜索技術(shù)(列表調(diào)度)、圖形算法(死碼消除)、動(dòng)態(tài)規(guī)劃(指令篩選)、有窮自動(dòng)機(jī)和下推自動(dòng)機(jī)(掃描和語(yǔ)法分析)、不動(dòng)點(diǎn)算法(數(shù)據(jù)流分析)處理復(fù)雜的問(wèn)題:動(dòng)態(tài)分配、同步、命名、局部化、存儲(chǔ)器分層管理、管道調(diào)度提供完整的解決方案:有機(jī)的結(jié)合算法、軟件體系結(jié)構(gòu)和軟件工程的各種理論,對(duì)棘手問(wèn)題給出綜合性的解答方案。2/4/202315編譯原理什么是編譯器什么是編譯程序預(yù)處理器編譯器匯編器裝配連接編輯骨架程序
源程序
目標(biāo)匯編程序
可重定位機(jī)器代碼
絕對(duì)機(jī)器碼可重定位目標(biāo)文件庫(kù)2/4/202316編譯原理源代碼符合人類閱讀習(xí)慣符合人類語(yǔ)法定義使用被命名的結(jié)構(gòu),例如變量和過(guò)程2/4/202317編譯原理裝配語(yǔ)言機(jī)器代碼符合硬件需求包含機(jī)器指令,使用寄存器和沒(méi)有命名的內(nèi)存地址對(duì)人類來(lái)說(shuō)很難理解2/4/202318編譯原理例子:輸出的裝配代碼沒(méi)有優(yōu)化的代碼優(yōu)化后的代碼2/4/202319編譯原理編譯器的基本原則編譯器是工程對(duì)象,是具有獨(dú)特目標(biāo)的大型軟件系統(tǒng),兩個(gè)設(shè)計(jì)原則必須遵守不違背原義編譯器必須保持被編譯程序的含義不變這一原則是編譯器設(shè)計(jì)者與編譯器用戶之間的契約的核心實(shí)用性原則編譯器必須用某種明確的方式改進(jìn)輸入程序例如代碼優(yōu)化等對(duì)輸入程序的改進(jìn)2/4/202320編譯原理有效的轉(zhuǎn)換目標(biāo):產(chǎn)生和源代碼描述相同計(jì)算的機(jī)器代碼這種轉(zhuǎn)換是唯一的嘛?有沒(méi)有“完美的轉(zhuǎn)換”(速度快,代碼量?。┚幾g器優(yōu)化=找到更好的轉(zhuǎn)換2/4/202321編譯原理轉(zhuǎn)換的正確性產(chǎn)生的代碼必須精確的執(zhí)行和源代碼相同的計(jì)算正確性很重要用不正確的編譯器調(diào)試程序很難……和開(kāi)發(fā)的成本、安全性密切相關(guān)編譯原理這門課程講述的就是可以保證轉(zhuǎn)換安全性的技術(shù)。2/4/202322編譯原理如何轉(zhuǎn)換轉(zhuǎn)換是一個(gè)很復(fù)雜的過(guò)程源程序語(yǔ)言和目標(biāo)程序語(yǔ)言是截然不同的我們需要結(jié)構(gòu)化這個(gè)轉(zhuǎn)換過(guò)程定義中間階段每個(gè)階段完成特定的功能2/4/202323編譯原理一個(gè)簡(jiǎn)單的編譯器的結(jié)構(gòu)2/4/202324編譯原理簡(jiǎn)單的前端結(jié)構(gòu)2/4/202325編譯原理Analogy(ctd)前端可以通過(guò)類比于人類理解自然語(yǔ)言的過(guò)程進(jìn)行解釋詞法分析自然語(yǔ)言:Hewrotetheprogram
單詞:‘he’‘wrote’‘the’‘program’編程語(yǔ)言:if(b==0)a=b token:‘if’‘(’‘b’‘==’‘0’‘)’‘a(chǎn)’‘=’‘b’2/4/202326編譯原理Analogy(ctd)語(yǔ)法分析自然語(yǔ)言編程語(yǔ)言2/4/202327編譯原理Analogy(ctd)語(yǔ)義分析自然語(yǔ)言He wrote the computernoun verb article noun語(yǔ)法正確,語(yǔ)義錯(cuò)誤!編程語(yǔ)言if(b==0) a=foo test assignment如果a是一個(gè)整型變量而foo是一個(gè)過(guò)程,那么語(yǔ)義分析就會(huì)報(bào)錯(cuò)2/4/202328編譯原理詞法分析詞法分析也叫線性分析和掃描。從左到右的讀構(gòu)成源程序的字符流,分組為多個(gè)記號(hào)。詞法分析器position:=initial+rate*60id1:=id2+id3*602/4/202329編譯原理語(yǔ)法分析語(yǔ)法分析也叫層次分析,把源程序的記號(hào)進(jìn)一步分組,產(chǎn)生被編譯器用于生成代碼的語(yǔ)法短語(yǔ)。程序的語(yǔ)法結(jié)構(gòu)常常需要遞歸上下文無(wú)關(guān)文法是遞歸規(guī)則的一種形式化,可以指導(dǎo)語(yǔ)法分析由于詞法分析不要求遞歸,因此我們通常不明確的界定詞法分析和語(yǔ)法分析的界限。也就是說(shuō),我們將詞法分析程序當(dāng)成語(yǔ)法分析程序調(diào)用的一個(gè)子程序。2/4/202330編譯原理語(yǔ)法分析(續(xù))語(yǔ)法分析器id1:=id2+id3*60id1id3id2:=+*60在本例中,算符優(yōu)先級(jí)可以通過(guò)如下方法定義:1.定義程序語(yǔ)言的語(yǔ)法規(guī)則體現(xiàn)算符的優(yōu)先級(jí)2.通過(guò)某些規(guī)則庫(kù),例如算符優(yōu)先級(jí)表格等來(lái)定義算符的優(yōu)先級(jí)2/4/202331編譯原理語(yǔ)義分析(續(xù))語(yǔ)義分析器id1id3id2:=+*60id1id3id2:=+*inttoreal60在本例中,幾個(gè)標(biāo)識(shí)符都是實(shí)數(shù)類型,而且源程序語(yǔ)言允許整數(shù)向?qū)崝?shù)類型的強(qiáng)制轉(zhuǎn)換2/4/202332編譯原理編譯器的應(yīng)用模型(邏輯結(jié)構(gòu))出錯(cuò)處理語(yǔ)法分析程序語(yǔ)義分析程序目標(biāo)代碼生成程序詞法分析程序中間代碼生成程序代碼優(yōu)化程序表格管理編譯的前端(FrontEnd)分析部分與源語(yǔ)言有關(guān)編譯的后端(BackEnd)綜合部分與目標(biāo)語(yǔ)言有關(guān)2/4/202333編譯原理2/4/202334編譯原理2/4/202335編譯原理遍(PASS)遍:對(duì)源程序(包括源程序的中間表示形式)從頭到尾掃描一次并作有關(guān)的加工處理,生成新的源程序中間形式或目標(biāo)程序,通常
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度國(guó)家級(jí)林木種植與銷售合作協(xié)議4篇
- 2024項(xiàng)目管理:招投標(biāo)策略與協(xié)議執(zhí)行要點(diǎn)版
- 二零二五年度旅行社與茶館餐飲服務(wù)合作協(xié)議4篇
- 二零二五年度水文地質(zhì)勘探打井施工合作協(xié)議3篇
- 二零二五年度可再生能源項(xiàng)目投資合作協(xié)議4篇
- 2024音樂(lè)素材及視頻素材一次性購(gòu)買使用合同
- 二零二五年度綠色建筑認(rèn)證施工承包合同2篇
- 二零二五年度融資租賃抵押借款合同范本3篇
- 2025年星級(jí)酒店客房清潔與消毒服務(wù)合同3篇
- 二零二五年度新型環(huán)保煤炭開(kāi)采居間代理合同范本4篇
- 第二章 運(yùn)營(yíng)管理戰(zhàn)略
- 《三本白皮書(shū)》全文內(nèi)容及應(yīng)知應(yīng)會(huì)知識(shí)點(diǎn)
- 專題14 思想方法專題:線段與角計(jì)算中的思想方法壓軸題四種模型全攻略(解析版)
- 醫(yī)院外來(lái)器械及植入物管理制度(4篇)
- 圖像識(shí)別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 港口與港口工程概論
- 《念珠菌感染的治療》課件
- 新概念英語(yǔ)第二冊(cè)考評(píng)試卷含答案(第49-56課)
- 商業(yè)倫理與企業(yè)社會(huì)責(zé)任(山東財(cái)經(jīng)大學(xué))智慧樹(shù)知到期末考試答案章節(jié)答案2024年山東財(cái)經(jīng)大學(xué)
- 【奧運(yùn)會(huì)獎(jiǎng)牌榜預(yù)測(cè)建模實(shí)證探析12000字(論文)】
- (完整版)譯林版英語(yǔ)詞匯表(四年級(jí)下)
評(píng)論
0/150
提交評(píng)論