編譯原理知識點總結(jié)
編譯原理是大學(xué)計算機(jī)專業(yè)的必修科目,也是計算機(jī)的基礎(chǔ)知識,學(xué)好編譯原理,有助于更好的進(jìn)行編程的操作,下面是編譯原理知識點總結(jié),一起來看看吧!
編譯原理知識點總結(jié)
一 編譯器
簡單講,編譯器就是將“高級語言”翻譯為“機(jī)器語言(低級語言)”的程序。一個現(xiàn)代編譯器的主要工作流程:源代碼 (source code) → 預(yù)處理器
(preprocessor) → 編譯器 (compiler) → 匯編程序 (assembler) → 目標(biāo)代碼 (object code) → 鏈接器(Linker) → 可執(zhí)行程序 (executables)
二 工作原理
編譯是從源代碼(通常為高階語言)到能直接被計算機(jī)或虛擬機(jī)執(zhí)行的目標(biāo)代碼(通常為低階語言或機(jī)器語言)的翻譯過程。然而,也存在從低階語言到高階語言的編譯器,這類編譯器中用來從由高階語言生成的低階語言代碼重新生成高階語言代碼的又被叫做反編譯器。
也有從一種高階語言生成另一種高階語言的編譯器,或者生成一種需要進(jìn)一步處理的的中間代碼的編譯器(又叫級聯(lián))。
典型的編譯器輸出是由包含入口點的名字和地址, 以及外部調(diào)用(到不在這個目標(biāo)文件中的函數(shù)調(diào)用)的機(jī)器代碼所組成的目標(biāo)文件。一組目標(biāo)文件,不必是同一編譯器產(chǎn)生,但使用的編譯器必需采用同樣的輸出格式,可以鏈接在一起并生成可以由用戶直接執(zhí)行的可執(zhí)行程序
三 編譯器的發(fā)展史
(1) 20世紀(jì)50年代
IBM的John Backus帶領(lǐng)一個研究小組對FORTRAN語言及其編譯器進(jìn)行開發(fā)。但由于當(dāng)時人們對編譯理論了解不多,開發(fā)工作變得既復(fù)雜又艱苦。與此同時,Noam Chomsky開始了他對自然語言結(jié)構(gòu)的研究。他的發(fā)現(xiàn)最終使得編譯器的結(jié)構(gòu)異常簡單,甚至還帶有了一些自動化。Chomsky的`研究導(dǎo)致了根據(jù)語言文法的難易程度以及識別它們所需要的算法來對語言分類。正如現(xiàn)在所稱的Chomsky架構(gòu)(Chomsky Hierarchy),它包括了文法的四個層次:0型文法、1型文法、2型文法和3型文法,且其中的每一個都是其前者的特殊情況。2型文法(或上下文無關(guān)文法)被證明是程序設(shè)計語言中最有用的,而且今天它已代表著程序設(shè)計語言結(jié)構(gòu)的標(biāo)準(zhǔn)方式。分析問題(parsing problem,用于上下文無關(guān)文法識別的有效算法)的研究是在60年代和70年代,它相當(dāng)完善的解決了這個問題,F(xiàn)在它已是編譯原理中的一個標(biāo)準(zhǔn)部分。
有限狀態(tài)自動機(jī)(Finite Automaton)和正則表達(dá)式(Regular Expression)同上下文無關(guān)文法緊密相關(guān),它們與Chomsky的3型文法相對應(yīng)。對它們的研究與Chomsky的研究幾乎同時開始,并且引出了表示程序設(shè)計語言的單詞的符號方式。
人們接著又深化了生成有效目標(biāo)代碼的方法,這就是最初的編譯器,它們被一直使用至今。人們通常將其稱為優(yōu)化技術(shù)(Optimization Technique),但因其從未真正地得到過被優(yōu)化了的目標(biāo)代碼而僅僅改進(jìn)了它的有效性,因此實際上應(yīng)稱作代碼改進(jìn)技術(shù)(Code Improvement Technique)。
當(dāng)分析問題變得好懂起來時,人們就在開發(fā)程序上花費(fèi)了很大的功夫來研究這一部分的編譯器自動構(gòu)造。這些程序最初被稱為編譯器的編譯器(Compiler-compiler),但更確切地應(yīng)稱為分析程序生成器(Parser Generator),這是因為它們僅僅能夠自動處理編譯的一部分。這些程序中最著名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年為Unix系統(tǒng)編寫的。類似的,有限狀態(tài)自動機(jī)的研究也發(fā)展了一種稱為掃描程序生成器(Scanner Generator)的工具,Lex(與Yacc同時,由Mike Lesk為Unix系統(tǒng)開發(fā))是這其中的佼佼者。
在70年代后期和80年代早期,大量的項目都貫注于編譯器其它部分的生成自動化,這其中就包括了代碼生成。這些嘗試并未取得多少成功,這大概是因為操作太復(fù)雜而人們又對其不甚了解。
(2) 國內(nèi)編譯器的研發(fā)歷史
我國編譯器研發(fā)工作起步并不算晚,早在60年代初期,董韞美院士和楊芙清院士就分別在中科院和北大領(lǐng)導(dǎo)研究組開發(fā)編譯器,那時面向的高級語言是ALGOL和FORTRAN,目標(biāo)機(jī)是國產(chǎn)機(jī)。
在改革開放前,由于國家需要,中科院、國防科大、江南計算所、北大等單位一直在研制國產(chǎn)計算機(jī),包括大型機(jī)和高性能計算機(jī)(如向量機(jī)、并行機(jī)),相應(yīng)的也在研制高級語言編譯器。中科院計算所以董韞美院士領(lǐng)導(dǎo)的研究組先后開發(fā)了119機(jī)、109機(jī)的類 ALGOL語言編譯器BCY。國防科大開發(fā)了向量編譯器和向量識別器。
70年代中科院計算所張兆慶教授研究組(以后稱ACTGroup)開始在國產(chǎn)機(jī)上研制FORTRAN語言編譯器,先后參與了眾多的院級和國家級科研攻關(guān)項目,主持開發(fā)了013,757,KJ8920等國產(chǎn)大型機(jī)系統(tǒng)中的FORTRAN語言編譯器,所研制的編譯器支持了數(shù)百萬行應(yīng)用軟件的運(yùn)行。
90年代以來ACTGroup承擔(dān)科學(xué)院重大項目,國家攻關(guān)項目,863項目,以及國際合作項目,先后開發(fā)了共享內(nèi)存多處理機(jī)的并行識別器,分布式內(nèi)存多處理機(jī)的并行識別器, SIMD芯片和VLIW芯片的并行優(yōu)化C編譯器。將編譯技術(shù)與圖形學(xué)結(jié)合,ACTGroup還推出了集成化、可視化的并行編程環(huán)境。ACTGroup在先進(jìn)編譯技術(shù)和并行編程環(huán)境方面的研究工作獲國內(nèi)外專家高度評價,國際著名學(xué)者評價此研究組居編譯領(lǐng)域的世界先進(jìn)行列。
(3) 研究現(xiàn)狀
編譯器設(shè)計最近的發(fā)展包括:首先,編譯器包括了更加復(fù)雜算法的應(yīng)用程序它用于推斷或簡化程序中的信息;這又與更為復(fù)雜的程序設(shè)計語言的發(fā)展結(jié)合在一起。其中典型的有用于函數(shù)語言編譯的Hindley-Milner類型檢查的統(tǒng)一算法。其次,編譯器已越來越成為基于窗口的交互開發(fā)環(huán)境(Interactive Development Environment,IDE)的一部分,它包括了編輯器、連接程序、調(diào)試程序以及項目管理程序。這樣的IDE標(biāo)準(zhǔn)并沒有多少,但是對標(biāo)準(zhǔn)的窗口環(huán)境進(jìn)行開發(fā)已成為方向。另一方面,盡管近年來在編譯原理領(lǐng)域進(jìn)行了大量的研究,但是基本的編譯器設(shè)計原理在近20年中都沒有多大的改變,它現(xiàn)在正迅速地成為計算機(jī)科學(xué)課程中的中心環(huán)節(jié)。
在九十年代,作為GNU項目或其它開放源代碼項目的一部分,許多免費(fèi)編譯器和編譯器開發(fā)工具被開發(fā)出來。這些工具可用來編譯所有的計算機(jī)程序語言。它們中的一些項目被認(rèn)為是高質(zhì)量的,而且對現(xiàn)代編譯理論感性趣的人可以很容易的得到它們的免費(fèi)源代碼。
大約在1999年,SGI公布了他們的一個工業(yè)化的并行化優(yōu)化編譯器Pro64的源代碼,后被全世界多個編譯器研究小組用來做研究平臺,并命名為Open64。Open64的設(shè)計結(jié)構(gòu)好,分析優(yōu)化全面,是編譯器高級研究的理想平臺。
(4)國內(nèi)編譯器開發(fā)的現(xiàn)狀
90年代以來,國內(nèi)主要以研制并行機(jī)為主,相應(yīng)的并行編譯器研制也在國內(nèi)開展起來。代表性的成果有:上海復(fù)旦大學(xué)朱傳琪教授研究組研制的面向共享存儲并行機(jī)的并行優(yōu)化編譯器AFT達(dá)到世界領(lǐng)先水平。
清華大學(xué)湯志忠教授研究組在軟流水優(yōu)化技術(shù)上做了很優(yōu)秀的研究工作。清華大學(xué)鄭緯民教授研究組開發(fā)了交互式并行化系統(tǒng) TIPSExplorer,北京大學(xué)許卓群教授、李曉明教授研究組在HPF(High Performance Fortran)編譯器方面做了多年工作,取得很好的研究成果。此外,國防科大、江南計算所等單位也都有從事并行編譯技術(shù)研究。隨著芯片研制,國內(nèi)還有若干單位也在開展基于GCC生成面向特定芯片的編譯器工作。
【編譯原理知識點總結(jié)】相關(guān)文章:
勒夏特列原理是什么10-12
《觀潮》知識點總結(jié)11-17
氯氣的生產(chǎn)原理說課稿11-08
抽屜原理簡要說課稿11-04
河中石獸的原理08-23
河中石獸物理原理11-29
《化石吟》知識點總結(jié)11-11
初中物理功的原理課件05-10
靜電屏蔽是什么原理?10-12