講義編譯原理_第1頁
講義編譯原理_第2頁
講義編譯原理_第3頁
講義編譯原理_第4頁
講義編譯原理_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、編譯原理汪志華 課程目標編譯原理是計算機科學與技術專業與軟件工程專業的專業課。使學生學習并掌握設計和構造編譯程序過程中所涉及的基本理論、基本方法和典型技術,具備分析、設計和實現編譯程序的基本能力為什么要學習編譯原理通過對本課程的學習,不僅可以掌握編譯程序本身的基本實現原理和技術,同時也有助于提高對程序設計語言的理解,提高語言設計及程序設計的能力。編譯程序構造的基本原理、技術、方法對其他軟件的設計具有參考和借鑒的意義編譯原理課程蘊含著計算機學科中解決問題的思路、抽象問題和解決問題的方法詞法分析器的串匹配技術-文本編輯器、信息檢索系統、模式識別器上下文無關文法、語法制導-排版、繪圖系統代碼優化技術

2、-程序驗證器高級語言設計、計算機系統結構的優化(并行、內存分層)、新型計算機系統結構設計、程序翻譯、提高軟件開發效率的工具#include #include void func() char s4; strcpy(s,12345678); printf(%sn,s); int main() func(); printf(Return from funcn);return 0;編譯器技術的應用高級語言的實現每一輪編程語言新特征的出現都刺激編譯器優化的新研究針對計算機體系結構的優化并行化 編譯器重新整理指令,使得指令級并行更有效 編譯器從傳統的串行程序自動生成并行代碼,使之運行于多處理器上內存分層

3、新計算機體系結構的設計現在計算機系統的性能不僅僅取決于它的原始速度,還取決于編譯器是否能生成充分利用其特征的代碼在現代計算機體系結構的研究中,在處理器的設計階段就開發編譯器,并將編譯生成的代碼在模擬器上運行,以評價擬采用體系結構的特征程序翻譯二進制翻譯數據庫查詢解釋器提高軟件開發效率的工具類型檢查類型檢查是一種捕捉程序中前后不一致的成熟并且有效的技術邊界檢查數據流分析技術可用來定位緩沖區溢出內存管理自動的內存管理刪除內存泄漏等內存管理錯誤編譯原理是計算機學科中較難的一門課程先修課程:程序設計語言、數據結構、離散數學、匯編語言涉及形式語言、有窮自動機等抽象內容,理論性較強缺乏實踐,基本上沒有完成

4、一個完整的編譯程序的機會,所以難以深入 注意事項因為課時關系,講課會有所側重(重點:第2,3,4章)課后要注意復習,否則將很難理解講述的內容作業要按時獨立完成參考書目龍書(Dragon book) 英文名:Compilers: Principles,Techniques,and Tools 作者:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman 中文名:編譯原理技術和工具 (編譯原理)虎書(Tiger book) 英文名:Modern Compiler Implementation in C 作者:Andrew W.Appel,with Jens Palsber

5、g 中文名:現代編譯原理-C語言描述鯨書(Whale book) 英文名:Advanced Compiler Design and Implementation 作者:Steven S.Muchnick 中文名:高級編譯器設計與實現 第一章 引論翻譯器:能夠把一種語言的程序轉換成另一種語言的程序的軟件,而后者與前者在邏輯上是等價的。編譯器(編譯程序):把某一種高級語言程序等價地轉換成另一種低級語言程序(如匯編語言或機器語言程序)的程序源語言翻譯器目標語言1.1 編譯器概述英譯與編譯的比較識別出句子中的一個個單詞分析句子的語法結構初步翻譯句子的含意譯文修飾寫出最后譯文詞法分析語法分析語義分析/中

6、間代碼生成優化目標代碼生成詞法分析器語法分析器語義分析器源程序中間代碼生成器獨立于機器的代碼優化器代碼生成器依賴于機器的代碼優化器目標機器代碼符號表1.1.1 詞法分析任務: 讀入源程序的字符流,按編程語言的詞法規則把它們組成詞法記號(token)流。描述工具:正規式和有限自動機(第二章)記號的表示:記號名是同類詞法單元共用的名稱屬性值是一個詞法單元有別于同類中其他詞法單元的特征值符 號 表 positioninitialrate. . . . . . .123詞法分析器id, 1 = id, 2 + id, 3 60position = initial + rate 601.1.2 語法分析

7、任務:在詞法分析的基礎上,根據語言的語法規則把記號流構造成各類語法單位。描述工具:上下文無關文法(第三章)中間表示:語法樹內部結點表示運算,子結點代表該運算的運算對象表達式的語法特征任何一個標識符都是表達式任何一個數都是表達式如果e1和e2都是表達式,那么 e1 + e2 e1 * e2 (e1)也都是表達式表達式表達式表達式標識符表達式表達式(initial)標識符(rate)數(60)*+initial + rate * 60的分析樹符 號 表 positioninitialrate. . . . . . .123語法分析器id, 1 = id, 2 + id, 3 60=+60id, 1

8、id, 2id, 3 語法樹1.1.3 語義分析任務:使用語法樹和符號表中的信息,依據語言定義來檢查源程序的語義一致性,以保證程序各部分能有意義地結合在一起。它還收集類型信息,把它們保存在符號表或語法樹中依循的原則:語義規則描述工具:屬性文法(第四章)符 號 表 positioninitialrate. . . . . . .123語義分析器=+60id, 1id, 2id, 3=+inttorealid, 1id, 2id, 3601.1.4 中間代碼生成所謂“中間代碼”是一種含義明確,便于處理的記號系統,它通常獨立于具體的硬件。這種記號系統或者與現代計算機的指令形式有某種程度的接近,或者能

9、夠比較容易地把它變換成現代計算機的機器指令易于產生易于翻譯成目標程序符 號 表 positioninitialrate. . . . . . .123中間代碼生成器t1 = inttoreal(60)t2 = id3 t1t3 = id2 + t2id1 = t3=+inttorealid, 1id, 2id, 3601.1.5 代碼優化任務:對于前階段產生的中間代碼進行加工變換,以期在最后階段產生更高效的目標代碼。注意:代碼優化工作會降低編譯程序的編譯速度,因此編譯程序具有控制機制以允許用戶在編譯速度和目標代碼的質量間進行權衡。符 號 表 positioninitialrate. . . .

10、 . . .123代碼優化器t1 = inttoreal(60)t2 = id3 t1t3 = id2 + t2id1 = t3t1 = id3 * 60.0id1 = id2 + t11.1.6 代碼生成任務:把中間代碼(或經優化處理后)變換成目標語言。關鍵問題:寄存器分配符 號 表 positioninitialrate. . . . . . .123代碼生成器MOVF id3, R2MULF #60.0, R2MOVF id2, R1ADDF R2, R1MOVF R1, id1t1 = id3 * 60.0id1 = id2 + t11.1.7 符號表管理符號表中記錄源程序中使用的名字和收集到的每個名字的各種屬性信息,諸如類型、作用域、分配存儲信息。如果是過程名字,還有參數的個數、類型 、參數傳遞方式和返回值類型等信息1.1.8 階段的分組詞法分析器語法分析器語義分析器源程序中間代碼生成器獨立于機器的代碼優化器代碼生成器依賴于機

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論