版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
編譯器設計與奧現(xiàn)Ⅰc原理剖析華中科技大學計算機學院張德2018/1126編譯器設計與奧現(xiàn)1概述1、編嶧器各階段源斥詞法分析器語法分析器語義分析器符號表管理器錯誤處理器間代碼生成器代碼優(yōu)化器代碼生成器目標程序概述22、編譯器各階段的分組●前端:依賴于語言并很大程度上獨立于目標機器。一般包括語法分析、詞法分析符號表的建立、語義分析、中間代碼生成以及相關錯誤處理◆后端:依賴于目標機器的階段或某些階段的某些部分。一般來說,后端完成的任務不依賴于源語言而只依賴于中間語言。主要包括代碼優(yōu)化、代碼生成以及相關的錯誤處理和符號表操作。2、編譯器各階段的分組3二、符號表◆符號表是編譯器保存信息的中心庫,編譯器的各部分通過符號表進行交互,并訪問符號表中的數(shù)據—一符號?!舴柋戆迅鞣N名字映射到符號集合。常量標識符和標號都是名字,不同名字有不同的屬性?!穹柟芾聿粌H要處理符號本身,還管理符號的作用域。二、符號表41、符號的表示structsymbolichar*name;//名稱cope;//作用域Coordinatesrc;//在源程序中位置Symbol/連接符號表中上一個符號Listuses;//可保存一個Coordinate列表,表示使用情況class;//擴展存儲類型<symbolflag>∥/符號標記Typetype;∥/如變量、函數(shù)、常量、結構或聯(lián)合等信息ref;//被引用的粗略次數(shù)union∥/聯(lián)合u為標號、結構、聯(lián)合、枚舉、常量、全局<appendentinfo>//和靜態(tài)變量提供附加信息Xsymbol/由后端處理,如為變量分配寄卷器<debuggerextension>//為調試器產生數(shù)據信息1、符號的表示51、符號的表示enumCONSTANTS=1,LABELS,GLOBAL,PARAM,LOCAL第k層中聲明的局部變量其scope域等于LOCAL+k。src域:typedefstructcoordchaunsignedx,y1Coordinatefle指名包含該符號定義文件名,y和x表示出現(xiàn)的行號及行中位置sclass城:符號擴展類型可以是AUTO、REGISTER、STATIC或EXTERN等◆首字母大寫的類型表示全小寫類型的指針,如Symbol1、符號的表示62、符號表的表示externTableconstantexternTableexternalsexternTableglobalsexternTableidentifiersexternTablelabelsexternTabletypes,structtable/同symbol中scope域Tableprevious;//符號表鏈表,指向level-1的表structentrystructsymbolsymstructentry*link}buckets256:/這是一個哈希鏈數(shù)組,方便插入、查找人Symbolall)指向當前及其外層所有符號列表的表頭2、符號表的表示73、符號表舉例Intx,y(intx,intablintby=x+a'b:if(y<51Inta:=X+ab3、符號表舉例80ab0094、符號表的相關操作查找和建立標識符Symbolinstall(constcharname,Table*tpp,intlevel,intarena)Symbollookup(constchar*name,Tabletp);●標號:與標識符相似,但不涉及作用域●常量:這些符號保存在constants表中°產生變量:用于產生靜態(tài)變量保存字符串等4、符號表的相關操作10編譯器設計和實現(xiàn)課件11編譯器設計和實現(xiàn)課件12編譯器設計和實現(xiàn)課件13編譯器設計和實現(xiàn)課件14編譯器設計和實現(xiàn)課件15編譯器設計和實現(xiàn)課件16編譯器設計和實現(xiàn)課件17編譯器設計和實現(xiàn)課件18編譯器設計和實現(xiàn)課件19編譯器設計和實現(xiàn)課件20編譯器設計和實現(xiàn)課件21編譯器設計和實現(xiàn)課件22編譯器設計和實現(xiàn)課件23編譯器設計和實現(xiàn)課件24編譯器設計和實現(xiàn)課件25編譯器設計和實現(xiàn)課件26編譯器設計和實現(xiàn)課件27編譯器設計和實現(xiàn)課件28編譯器設計和實現(xiàn)課件29編譯器設計和實現(xiàn)課件30編譯器設計和實現(xiàn)課件31編譯器設計和實現(xiàn)課件32編譯器設計和實現(xiàn)課件33編譯器設計和實現(xiàn)課件34編譯器設計和實現(xiàn)課件35編譯器設計和實現(xiàn)課件36編譯器設計和實現(xiàn)課件37編譯器設計和實現(xiàn)課件38編譯器設計和實現(xiàn)課件39編譯器設計和實現(xiàn)課件40編譯器設計和實現(xiàn)課件41編譯器設計和實現(xiàn)課件42編譯器設計和實現(xiàn)課件43編譯器設計和實現(xiàn)課件44編譯器設計和實現(xiàn)課件45編譯器設計和實現(xiàn)課件46編譯器設計和實現(xiàn)課件47編譯器設計和實現(xiàn)課件48編譯器設計和實現(xiàn)課件49編譯器設計和實現(xiàn)課件50編譯器設計和實現(xiàn)課件51編譯器設計和實現(xiàn)課件52編譯器設計和實現(xiàn)課件53編譯器設計和實現(xiàn)課件54編譯器設計和實現(xiàn)課件55編譯器設計和實現(xiàn)課件56編譯器設計和實現(xiàn)課件57編譯器設計和實現(xiàn)課件58編譯器設計和實現(xiàn)課件59編譯器設計和實現(xiàn)課件60編譯器設計和實現(xiàn)課件61編譯器設計和實現(xiàn)課件62編譯器設計和實現(xiàn)課件63編譯器設計和實現(xiàn)課件64編譯器設計和實現(xiàn)課件65編譯器設計與奧現(xiàn)Ⅰc原理剖析華中科技大學計算機學院張德2018/1126編譯器設計與奧現(xiàn)66概述1、編嶧器各階段源斥詞法分析器語法分析器語義分析器符號表管理器錯誤處理器間代碼生成器代碼優(yōu)化器代碼生成器目標程序概述672、編譯器各階段的分組●前端:依賴于語言并很大程度上獨立于目標機器。一般包括語法分析、詞法分析符號表的建立、語義分析、中間代碼生成以及相關錯誤處理◆后端:依賴于目標機器的階段或某些階段的某些部分。一般來說,后端完成的任務不依賴于源語言而只依賴于中間語言。主要包括代碼優(yōu)化、代碼生成以及相關的錯誤處理和符號表操作。2、編譯器各階段的分組68二、符號表◆符號表是編譯器保存信息的中心庫,編譯器的各部分通過符號表進行交互,并訪問符號表中的數(shù)據—一符號?!舴柋戆迅鞣N名字映射到符號集合。常量標識符和標號都是名字,不同名字有不同的屬性。●符號管理不僅要處理符號本身,還管理符號的作用域。二、符號表691、符號的表示structsymbolichar*name;//名稱cope;//作用域Coordinatesrc;//在源程序中位置Symbol/連接符號表中上一個符號Listuses;//可保存一個Coordinate列表,表示使用情況class;//擴展存儲類型<symbolflag>∥/符號標記Typetype;∥/如變量、函數(shù)、常量、結構或聯(lián)合等信息ref;//被引用的粗略次數(shù)union∥/聯(lián)合u為標號、結構、聯(lián)合、枚舉、常量、全局<appendentinfo>//和靜態(tài)變量提供附加信息Xsymbol/由后端處理,如為變量分配寄卷器<debuggerextension>//為調試器產生數(shù)據信息1、符號的表示701、符號的表示enumCONSTANTS=1,LABELS,GLOBAL,PARAM,LOCAL第k層中聲明的局部變量其scope域等于LOCAL+k。src域:typedefstructcoordchaunsignedx,y1Coordinatefle指名包含該符號定義文件名,y和x表示出現(xiàn)的行號及行中位置sclass城:符號擴展類型可以是AUTO、REGISTER、STATIC或EXTERN等◆首字母大寫的類型表示全小寫類型的指針,如Symbol1、符號的表示712、符號表的表示externTableconstantexternTableexternalsexternTableglobalsexternTableidentifiersexternTablelabelsexternTabletypes,structtable/同symbol中scope域Tableprevious;//符號表鏈表,指向level-1的表structentrystructsymbolsymstructentry*link}buckets256:/這是一個哈希鏈數(shù)組,方便插入、查找人Symbolall)指向當前及其外層所有符號列表的表頭2、符號表的表示723、符號表舉例Intx,y(intx,intablintby=x+a'b:if(y<51Inta:=X+ab3、符號表舉例730ab00744、符號表的相關操作查找和建立標識符Symbolinstall(constcharname,Table*tpp,intlevel,intarena)Symbollookup(constchar*name,Tabletp);●標號:與標識符相似,但不涉及作用域●常量:這些符號保存在constants表中°產生變量:用于產生靜態(tài)變量保存字符串等4、符號表的相關操作75編譯器設計和實現(xiàn)課件76編譯器設計和實現(xiàn)課件77編譯器設計和實現(xiàn)課件78編譯器設計和實現(xiàn)課件79編譯器設計和實現(xiàn)課件80編譯器設計和實現(xiàn)課件81編譯器設計和實現(xiàn)課件82編譯器設計和實現(xiàn)課件83編譯器設計和實現(xiàn)課件84編譯器設計和實現(xiàn)課件85編譯器設計和實現(xiàn)課件86編譯器設計和實現(xiàn)課件87編譯器設計和實現(xiàn)課件88編譯器設計和實現(xiàn)課件89編譯器設計和實現(xiàn)課件90編譯器設計和實現(xiàn)課件91編譯器設計和實現(xiàn)課件92編譯器設計和實現(xiàn)課件93編譯器設計和實現(xiàn)課件94編譯器設計和實現(xiàn)課件95編譯器設計和實現(xiàn)課件96編譯器設計和實現(xiàn)課件97編譯器設計和實現(xiàn)課件98編譯器設計和實現(xiàn)課件99編譯器設計和實現(xiàn)課件100編譯器設計和實現(xiàn)課件101編譯器設計和實現(xiàn)課件102編譯器設計和實現(xiàn)課件103編譯器設計和實現(xiàn)課件104編譯器設計和實現(xiàn)課件105編譯器設計和實現(xiàn)課件106編譯器設計和實現(xiàn)課件107編譯器設計和實現(xiàn)課件108編譯器設計和實現(xiàn)課件109編譯器設計和實現(xiàn)課件110編譯器設計和實現(xiàn)課件111編譯器設計和實現(xiàn)課件112編譯器設計和實現(xiàn)課件113編譯器設計和實現(xiàn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型建筑用沖擊錘租賃與安裝服務合同3篇
- 2025年度奶茶店員工保密協(xié)議與知識產權保護合同4篇
- 2025年度個人房屋裝修貸款合同模板10篇
- 2025年度摩托車駕駛培訓學校合作辦學合同4篇
- 2025年度城市臨時商業(yè)區(qū)搭建與經營管理合同4篇
- 二零二五年度智慧交通工程款代付合作協(xié)議4篇
- 數(shù)字化轉型路徑-第1篇-深度研究
- 2025年度個人住宅陽臺防水改造合同范本6篇
- 二零二五年度船舶動力電池份額轉讓與市場推廣協(xié)議3篇
- 2025年度模具加工與全球供應鏈優(yōu)化合同4篇
- 數(shù)學-山東省2025年1月濟南市高三期末學習質量檢測濟南期末試題和答案
- 中儲糧黑龍江分公司社招2025年學習資料
- 湖南省長沙市2024-2025學年高一數(shù)學上學期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 2024年林地使用權轉讓協(xié)議書
- 物流有限公司安全生產專項整治三年行動實施方案全國安全生產專項整治三年行動計劃
- 2025屆江蘇省13市高三最后一卷生物試卷含解析
- 當前中國個人極端暴力犯罪個案研究
- 中國象棋比賽規(guī)則
- 7天減肥餐食譜給你最能瘦的一周減肥食譜
- GB/T 31525-2015圖形標志電動汽車充換電設施標志
評論
0/150
提交評論