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

主站蜘蛛池模板: 精品无码视频在线观看| 亚洲a级毛片| 亚洲精品国产综合99| 69av免费视频| 欧美日韩精品一区二区在线线| 国产成人一区| 六月婷婷激情综合| 高清色本在线www| 久久综合结合久久狠狠狠97色| 性色一区| 欧美成人怡春院在线激情| 污网站在线观看视频| 国产成人无码AV在线播放动漫| 无码国产伊人| 18禁高潮出水呻吟娇喘蜜芽| 欧美性猛交一区二区三区 | 国产精女同一区二区三区久| 国产真实乱子伦精品视手机观看 | 精品国产一二三区| 欧美亚洲欧美区| 在线播放国产99re| 亚洲国产黄色| 亚洲国产精品VA在线看黑人| 国产成人三级在线观看视频| 亚洲国产中文在线二区三区免| 91亚洲精品第一| 日本草草视频在线观看| 国产美女主播一级成人毛片| 亚洲精品制服丝袜二区| 人妖无码第一页| 国产幂在线无码精品| 久久国产精品麻豆系列| 91亚洲精选| 国产精品免费入口视频| 免费在线成人网| 中文字幕亚洲乱码熟女1区2区| 噜噜噜久久| 亚洲国产天堂久久综合| 成人在线观看一区| 99人妻碰碰碰久久久久禁片| 伊人丁香五月天久久综合| 日韩a级片视频| 亚洲成年人片| 无码专区在线观看| 国产精品欧美激情| 欧美成人综合视频| 国产欧美日韩另类精彩视频| 精品无码一区二区在线观看| 伊人久久久久久久| 国产香蕉国产精品偷在线观看 | 色视频国产| 久久综合国产乱子免费| 成人中文在线| 国产超碰一区二区三区| 精品1区2区3区| 自拍欧美亚洲| 日本久久免费| 黄色网站不卡无码| 国产91成人| 欧美另类图片视频无弹跳第一页| 亚洲欧美综合精品久久成人网| 日本在线欧美在线| 97人人模人人爽人人喊小说| 国产精品成人一区二区不卡| 无码福利视频| 97久久精品人人做人人爽| 欧美人与动牲交a欧美精品| 欧美日韩精品一区二区视频| 国产精品欧美激情| 无码综合天天久久综合网| 久久一色本道亚洲| 国产午夜福利在线小视频| 亚洲一本大道在线| 日韩国产另类| 日本精品影院| 国产手机在线观看| 福利一区三区| 中文字幕2区| 国产a v无码专区亚洲av| 97国内精品久久久久不卡| 在线色国产| 国产精品手机视频|