999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

編譯技術綜述

2018-08-22 19:35:16張世奇
科學與財富 2018年20期

張世奇

摘要:本文通過介紹編譯技術的發展歷史,進而引入編譯系統,通過對編譯系統的五大步驟的系統介紹,使讀者初步認識什么是編譯系統,以及編譯系統各個步驟的主要功能。最后聯系當前人工智能技術,分布式技術,多核技術對編譯技術的影響,對未來的編譯技術的發展進行展望。

關鍵詞:DFA,NFA,句柄,最左素短語

一、編譯技術發展歷史

在二十世紀五十年代,編譯器的開發還是一件非常困難的事情。因為早期大多數的編譯工作是人們手動將算術公式翻譯為機器代碼,當面對復雜的運算公式時,這項工作就變得十分繁瑣。在這個時期,出現了許多高級編程語言,然而第一個Fortran編譯器卻經歷了多年的開發才完成。到二十世紀年代末期,研究人員開始研究能夠自動編譯的工具。從二十世紀六十年代開始,人們開始使用自展技術來構造編譯程序。

近二十年來,隨著計算機技術的迅猛發展,編譯技術也有了長足進步,涌現出了多種優異的編譯技術,如并行編譯技術,交叉編譯技術等等。與此同時,認人們也開發了多種自動生成工具,LEX用于生成詞法分析程序,YACC用于生成語法分析程序等。

二、編譯系統

我們使用高級編程語言邊寫程序,通常是將我們對業務邏輯的理解轉化為程序代碼。編譯則是將我們編寫的源程序通過轉化,成為計算機能夠運行的機器代碼。編譯過程主要分為以下五個階段(如下圖一)。

(一)詞法分析

詞法分析器工作的首要步驟是對輸入的源程序進行預處理,即去除空白符,回車符等編輯性字符,此外還要去除程序中出現的注解。其次,通過超前搜索來對輸入的單詞符號進行識別。最后,構建非確定有限自動機(NFA),并對NFA進行確定化,使其轉換為有限自動機(DFA)來識別字符串。

(二)語法分析[1]

語法分析是建立在詞法分析的基礎之上進行的,它根據文法的產生式來識別輸入的字符串是否可以構成一個句子。下面會介紹兩種語法分析的方法。

自上而下分析法是基于文法進行的,以文法產生式的開始符號作為樹根,自頂向下的構建一棵語法樹。語法分析過程從本質上來講,是一種試探性的分析過程,是一個不斷使用不同的產生式來進行字符串匹配的過程。

自底向上分析法分為算符優先分析法和規范分析法。它們均利用了計算機中的棧,用一個棧區來存儲產生式中的符號,利用棧先進后出的特性,先把符號一個一個移進到棧中。當棧頂出現某一個產生式的候選式時,把棧頂的這一部分進行規約。其中規范規約首先利用產生式規則,對輸入串構建一棵語法樹,根據構建的語法樹尋找句柄,并在符號棧內進行規約。算符優先分析同樣需要根據產生式規則建立一棵語法樹,并尋找最左素短語來進行規約,由于算符優先分析跳過了所有單非產生式對對應的規約步驟,由此可能會出現無法構成句子的輸入串,誤認為是一個句子的錯誤。

(三)語義分析與中間代碼生成[2]

當詞法分析和語法分析完成后,編譯程序就要進行靜態語義檢查和翻譯。所謂靜態語義檢查,即操作符的類型檢查,對控制流語句使用的合法性進行檢查,檢查是否有對象被重復定義,以及相關名字檢查。

在編譯過程中,我們還需要將源程序轉化為中間語言,通常有后綴式、三地址代碼以及DAG圖三種方式。

后綴式表示法,又被人們稱之為逆波蘭表達式。這一種表示方法,其主要作用是將表達式中的操作數寫在表達式前面,將算符寫在表達式的后面。

圖表示法包括兩種表達方式,分別為DAG和抽象語法樹。

(四)優化

優化的目的是為了提高代碼效率,在優化時,對代碼的變換需要遵守以下原則:

1)等價原則。代碼經優化過后不會影響代碼最終的執行結果。

2)有效原則。使代碼優化后,盡可能的降低時間復雜度和空間復雜度,使減少代碼運行時間,占用較小的內存

3)合算原則。盡可能以較小代價取得較好的優化效果。

代碼優化通常使用這幾種方法:

1)刪除公共子表達式

假設一個表達式S被計算過一次,且在計算之后表達式S之中的變量值為發生改變,那么我們將S稱之為公共子表達式。我們為了避免對這些公共表達式的重復計算,要將它們刪除,也可以稱為刪除多余運算。

2)復寫傳播[3]

例如H1:=H2; Z:=X[H1];

H2將值付給H1,Z=X[H1];引用了H1的值,我們可以將Z=X[H1];改為Z=X[H2];我們稱這種變換方式為復寫傳播。

3)刪除無用代碼

對于進行復寫傳播的表達式中的變量以及一些臨時變量,因為在整個程序中不會被再次使用,且這些變量的賦值對程序運行的最終結果沒有影響。我們可以將其刪除。

4)代碼外提

對于程序之中的循環結構,若一些代碼在循環中產生的結果是不改變的,我們可以將這一部分代碼從循環內部提取出來,將它們放在該循環結構外面。

5)強度削減

將循環中的乘除法變為加減法,因為在計算機中,加減法的運算速度要比乘除法的運算速度快。

6)刪除歸納變量

(五)目標代碼生成

該階段利用經語義分析或者優化后的中間代碼轉化為目標代碼。

目標代碼通常有以下三種形式:

1)計算機可以立即執行的機器代碼

2)待裝配的機器語言模塊

3)匯編語言代碼。

三、對未來編譯技術的展望

隨著人工智能技術的崛起,將人工智能技術應用與編譯技術,為大幅提升編譯效率帶來了希望。如今,雙向長短期神經網絡已經初步運用到了詞法分析當中,使詞法分析效率進一步提高。此外,就目前的分布式技術發展情況來看,并行編譯技術已經使編譯速度大大提高,近年來分布式技術的迅速發展發展,并行運算量將會再上一個臺階,這將極大推動并行編譯技術的發展。從硬件發展的角度來看,隨著多核技術的不斷成熟,編譯技術正逐步從單核編譯技術向多核編譯技術轉變,從而提高編譯執行的效率,我們相信隨著未來技術的不斷進步,編譯技術必將迎來革命性的發展。

參考文獻:

[1]陳火旺,錢家驊,孫永強。著,程序設計語言編譯原理 [M]國防工業出版社,2017.3

[2]Alfred V.Aho ,Monica S.Lam,Ravi Sethi,Jeffrey D.Ullman 著,機械工業出版社,2008.12

[3]趙雄芳,白克明,易忠興,張克強,編譯原理例解析疑。長沙:湖南科技出版社,1991

主站蜘蛛池模板: 老司机精品99在线播放| 一级黄色欧美| 久久鸭综合久久国产| 久久综合久久鬼| 久夜色精品国产噜噜| 日韩无码真实干出血视频| 欧美中文字幕第一页线路一| 精品欧美视频| 无码内射在线| 日本亚洲欧美在线| 亚洲成人77777| 免费看的一级毛片| 四虎影视库国产精品一区| 国产经典在线观看一区| 亚洲91精品视频| 伊大人香蕉久久网欧美| 日韩毛片在线播放| 国产精品一区二区国产主播| 操操操综合网| 无码专区在线观看| 国产午夜福利在线小视频| 亚洲首页国产精品丝袜| 欧美日韩在线成人| 乱人伦99久久| 毛片网站免费在线观看| 国产精品成人啪精品视频| 亚洲成人在线网| 亚洲天堂视频网站| 丁香婷婷久久| 热re99久久精品国99热| 国产精品第页| 91网址在线播放| 免费国产不卡午夜福在线观看| 精品無碼一區在線觀看 | 国产天天色| 欧美啪啪精品| 亚洲成AV人手机在线观看网站| 亚洲精品大秀视频| 激情无码字幕综合| 日本妇乱子伦视频| 呦女亚洲一区精品| 狠狠综合久久久久综| 日韩成人在线网站| 免费国产好深啊好涨好硬视频| 亚洲中文字幕精品| 热九九精品| 成年A级毛片| 在线观看精品自拍视频| 免费国产小视频在线观看| 久久综合婷婷| 久久人体视频| 看看一级毛片| 日韩大乳视频中文字幕| 在线国产欧美| 欧美精品啪啪一区二区三区| 正在播放久久| 国产一区二区三区在线观看视频| av午夜福利一片免费看| 亚洲人成网站在线播放2019| 思思热在线视频精品| 国产91在线免费视频| 亚洲精品日产精品乱码不卡| 国产乱人伦AV在线A| 久久黄色小视频| 国产亚洲精品自在久久不卡| 一级福利视频| 国产人妖视频一区在线观看| 国产免费一级精品视频| 国产主播喷水| 免费看美女自慰的网站| 亚洲高清免费在线观看| 重口调教一区二区视频| 精品久久高清| 在线看国产精品| 三上悠亚一区二区| 国产一级精品毛片基地| 午夜a级毛片| 婷婷伊人久久| 啊嗯不日本网站| 精品综合久久久久久97超人该| 色综合久久久久8天国| 精品无码人妻一区二区|