一、
歷史背景
上世紀50
年代,ibm
的john backus
帶領乙個研究小組對
fortran
語言及其編譯器進行開發。但由於當時人們對編譯理論了解不多,開發工作變得既複雜又艱苦。與此同時,
noam chomsky
開始了他對自然語言結構的研究。他的發現最終使得編譯器的結構異常簡單,甚至還帶有了一些自動化。
chomsky
的研究導致了根據語言文法的難易程度以及識別它們所需要的演算法來對語言分類。正如現在所稱的
chomsky
架構(chomsky hierarchy
),它包括了文法的四個層次:
0型文法、
1型文法、
2型文法和
3型文法,且其中的每乙個都是其前者的特殊情況。
2型文法(或上下文無關文法)被證明是程式語言中最有用的,而且今天它已代表著程式語言結構的標準方式。分析問題(
parsing problem
,用於上下文無關文法識別的有效演算法)的研究是在
60年代和
70年代,它相當完善的解決了這個問題。現在它已是編譯原理中的乙個標準部分。
有限狀態自動機(
finite automaton
)和正規表示式(
regular expression
)同上下文無關文法緊密相關,它們與
chomsky的3
型文法相對應。對它們的研究與
chomsky
的研究幾乎同時開始,並且引出了表示程式語言的單詞的符號方式。
人們接著又深化了生成有效目標**的方法,這就是最初的編譯器,它們被一直使用至今。人們通常將其稱為優化技術(
optimization technique
),但因其從未真正地得到過被優化了的目標**而僅僅改進了它的有效性,因此實際上應稱作**改進技術(
code improvement technique)。
當分析問題變得好懂起來時,人們就在開發程式上花費了很大的功夫來研究這一部分的編譯器自動構造。這些程式最初被稱為編譯器的編譯器(
compiler-compiler
),但更確切地應稱為分析程式生成器(
parser generator
),這是因為它們僅僅能夠自動處理編譯的一部分。這些程式中最著名的是
yacc
(yet another compiler-compiler
),它是由
steve johnson
在1975
年為unix
系統編寫的。類似的,有限狀態自動機的研究也發展了一種稱為掃瞄程式生成器(
scanner generator
)的工具,
lex(與
yacc
同時,由
mike lesk
為unix
系統開發)是這其中的佼佼者。 在
70年代後期和
80年代早期,大量的專案都貫注於編譯器其它部分的生成自動化,這其中就包括了**生成。這些嘗試並未取得多少成功,這大概是因為操作太複雜而人們又對其不甚了解。
國內編譯器的研發歷史
我國編譯器研發工作起步並不算晚,早在
60年代初期,董韞美院士和楊芙清院士就分別在中科院和北大領導研究組開發編譯器,那時面向的高階語言是
algol
和fortran
,目標機是國產機。
在改革開放前,由於國家需要,中科院、國防科大、江南計算所、北大等單位一直在研製國產計算機,包括大型機和高效能計算機(如向量機、並行機),相應的也在研製高階語言編譯器。中科院計算所以董韞美院士領導的研究組先後開發了
119機、
109機的類
algol
語言編譯器
bcy。國防科大開發了向量編譯器和向量識別器。 70
年代中科院計算所張兆慶教授研究組(以後稱
actgroup
)開始在國產機上研製
fortran
語言編譯器,先後參與了眾多的院級和國家級科研攻關專案,主持開發了
013,
757,
kj8920
等國產大型機系統中的
fortran
語言編譯器,所研製的編譯器支援了數百萬行應用軟體的執行。 90
年代以來
actgroup
承擔科學院重大專案,國家攻關專案,
863專案,以及國際合作專案,先後開發了共享記憶體多處理機的並行識別器,分布式記憶體多處理機的並行識別器,
simd
晶元和vliw
晶元的並行優化
c編譯器。將編譯技術與圖形學結合,
actgroup
還推出了整合化、視覺化的並行程式設計環境。
actgroup
在先進編譯技術和並行程式設計環境方面的研究工作獲國內外專家高度評價,國際著名學者評價此研究組居編譯領域的世界先進行列。
二、
研究現狀
編譯器設計最近的發展包括:首先,編譯器包括了更加複雜演算法的應用程式它用於推斷或簡化程式中的資訊;這又與更為複雜的程式語言的發展結合在一起。其中典型的有用於函式語言編譯的
hindley-milner
型別檢查的統一演算法。其次,編譯器已越來越成為基於視窗的互動開發環境(
interactive development environment
,ide
)的一部分,它包括了編輯器、連線程式、除錯程式以及專案管理程式。這樣的
ide標準並沒有多少,但是對標準的視窗環境進行開發已成為方向。另一方面,儘管近年來在編譯原理領域進行了大量的研究,但是基本的編譯器設計原理在近
20年中都沒有多大的改變,它現在正迅速地成為電腦科學課程中的中心環節。
在九十年代,作為
gnu專案或其它開放源**專案的一部分,許多免費編譯器和編譯器開發工具被開發出來。這些工具可用來編譯所有的計算機程式語言。它們中的一些專案被認為是高質量的,而且對現代編譯理論感性趣的人可以很容易的得到它們的免費源**。
大約在
1999
年,sgi
公布了他們的乙個工業化的並行化優化編譯器
pro64
的源**,後被全世界多個編譯器研究小組用來做研究平台,並命名為
open64
。open64
的設計結構好,分析優化全面,是編譯器高階研究的理想平台。
國內編譯器開發的現狀
90年代以來,國內主要以研製並行機為主,相應的並行編譯器研製也在國內開展起來。代表性的成果有:上海復旦大學朱傳琪教授研究組研製的面向共享儲存並行機的並行優化編譯器
aft達到世界領先水平。清華大學湯志忠教授研究組在軟流水優化技術上做了很優秀的研究工作。清華大學鄭緯民教授研究組開發了互動式並行化系統
tip***plorer
,北京大學許卓群教授、李曉明教授研究組在
hpf(
high performance fortran
)編譯器方面做了多年工作,取得很好的研究成果。此外,國防科大、江南計算所等單位也都有從事並行編譯技術研究。隨著晶元研製,國內還有若干單位也在開展基於
gcc生成面向特定晶元的編譯器工作。
編譯器簡要介紹
三 編譯器的分析 綜合模式 四 編譯器的編寫工具 複雜就是將簡單的事情重複一萬遍 計算機只能識別簡單的0 1串,高低電平控制著計算機內部各種簡單的暫存器 邏輯門 觸發器完成對應的功能,然後,這些暫存器 邏輯門 觸發器會以不同的組合方式重組為更複雜的功能硬體。這個過程一再重複,最終生成了複雜的計算機晶...
編譯方舟編譯器
環境 mac os parallels desktop 安裝ubuntu 16.04 安裝基礎包 sudo apt get y install openjdk 8 jdk git core gnupg flex bison gperf build essential zip curl zlib1g ...
方舟編譯器編譯
目錄環境變數 安裝 ninja 和 gn 編譯成功 總結2019.9.1 編譯華為方舟編譯器原始碼 這篇文章僅僅是關於如何搭建環境並進行編譯。本機環境 ubuntu 16 server.一定要好好看參考文件!建議使用root賬戶操作 先 clone 原始碼華為開源平台 對應的參考文件openarkc...