賈巧蘭 河南大學(xué)軟件學(xué)院
機器語言是機器直接能夠識別的語言,匯編語言與機器有關(guān),屬于低級語言,需要進行編譯之后才可運行。編譯技術(shù)的必要性來自于匯編語言的缺點:閱讀和理解較為困難、編寫過程不易且嚴(yán)格依賴于特定的機器,因此,編譯技術(shù)應(yīng)運而生。
在20世紀(jì)40年代,由于馮.諾伊曼在存儲-程序計算機方面的先鋒作用,為使計算機能夠執(zhí)行所需的計算,編寫一串代碼或程序已成必要。起初,這些程序都是用機器語言(machine language)進行編寫。機器語言就是表示機器實際操作的數(shù)字代碼,但編寫這樣的代碼十分費時和乏味,這種代碼形式很快就被匯編語言(assembly language)所代替。在匯編語言中,都是以符號形式給出指令和存儲地址的,大大提高了編程的速度和準(zhǔn)確度,但是由于匯編語言的編寫嚴(yán)格依賴于特定的機器,所以為一臺計算機編寫的代碼在應(yīng)用于另一臺計算機時必須完全重寫,費時費力。
20世紀(jì)50年代早期,由于當(dāng)初大量的實驗和實現(xiàn)工作是由不同的小組獨立完成的,多數(shù)早期的編譯工作是將算術(shù)公式翻譯成機器代碼。用現(xiàn)在的標(biāo)準(zhǔn)來衡量,當(dāng)時的編譯程序能完成的工作十分基礎(chǔ)且有限,如只允許進行簡單的單目運算,數(shù)據(jù)元素的命名方式也有很多限制。然而它們奠定了對高級語言編譯系統(tǒng)的研究和開發(fā)的基礎(chǔ)。
20世紀(jì)50年代中期出現(xiàn)了FORTRAN等一批高級語言,相應(yīng)的一批編譯系統(tǒng)開發(fā)成功。隨著編譯技術(shù)的發(fā)展和社會對編譯程序需求的不斷增長,20世紀(jì)50年代末有人開始研究編譯程序的自動生成工具,提出并研制編譯程序的編譯程序。它的功能是以任一語言的詞法規(guī)則、語法規(guī)則和語義解釋出發(fā),自動產(chǎn)生該語言的編譯程序。目前很多自動生成工具已廣泛使用,如詞法分析程序的生成系統(tǒng)LEX,語法分析程序的生成系統(tǒng)YACC等。20世紀(jì)60年代起,不斷有人使用自展技術(shù)來構(gòu)造編譯程序。自展的主要特征是用被編譯的語言來書寫該語言自身的編譯程序;70年代后期和80年代早期,大量的項目都貫注于編譯器其它部分生成自動化,其中也包括代碼的生成。
目前流行的編譯技術(shù)主要有:并行編譯技術(shù)、交叉編譯技術(shù)、動態(tài)編譯技術(shù)。并行編譯技術(shù)首先利用重構(gòu)技術(shù)將串行程序并行化,將已有的串行語言編寫的程序經(jīng)過相關(guān)分析分解成可并行的成分分配到CPU或多處理機上運行,最后直接編寫并行程序;由于目標(biāo)機的指令系統(tǒng)與宿主機的指令系統(tǒng)的不同,通常使用交叉編譯技術(shù)把某個機器(宿主機)上已有的軟件移植到另一臺(目標(biāo)機)上,主要是編譯程序在宿主機A上運行把應(yīng)用程序的源程序生成目標(biāo)機B的代碼;動態(tài)編譯技術(shù)即編譯運行時的程序變換,是優(yōu)化利用在運行時提供的信息對程序提供更安全的優(yōu)化,因此利用動態(tài)編譯技術(shù)可大大擴大優(yōu)化范圍從而能夠產(chǎn)生更有效的代碼。
自展法:主要特征即用被編譯的語言來書寫該語言自身的編譯程序。1971年P(guān)ASCAL的編譯程序用自展技術(shù)生成后,其影響就越來越大;自動生成法:典型的自動生成工具有LEX-詞法分析器和YACC-語法分析器;自編譯:主要思想是用目標(biāo)機的匯編語言或機器語言對源程序的核心部分構(gòu)造一個小小的編譯程序,再以它為工具構(gòu)造一個能夠編譯更多語言成分的較大編譯程序。
編譯技術(shù)的應(yīng)用主要有:在反病毒方面、基于編譯技術(shù)的可信賴計算方法以及基于編譯技術(shù)的協(xié)議解析方法。
由于不同結(jié)構(gòu)的處理器核的指令集不同,需要生成在不同處理器核上執(zhí)行不同的執(zhí)行碼,因此編譯過程更加復(fù)雜,為了提高性能,對編譯優(yōu)化技術(shù)的要求也更高。多核處理器的編譯過程主要是代碼劃分、分別編譯、執(zhí)行代碼的組織。
所面臨的的三個挑戰(zhàn):需要開發(fā)相關(guān)的工程技術(shù)來幫助檢測和避免程序缺陷;安全風(fēng)險-開發(fā)相關(guān)的策略檢測程序?qū)ν獠抗舻牡钟芰Γ婚_發(fā)自動的程序驗證技術(shù)
隨著智能手機的迅速發(fā)展,移動領(lǐng)域的編譯發(fā)展顯得尤為重要。利用交叉編譯技術(shù)來跨平臺,將具備更強的競爭優(yōu)勢,未來或?qū)⒃趲追N主要的移動設(shè)備開發(fā)技術(shù)中脫穎而出。
編譯技術(shù)是人類智慧到機器執(zhí)行的橋梁,軟件到硬件層層推進的銜接力量!
[1]張亞娟、馮靈霞、王雪春.編譯技術(shù)的發(fā)展及應(yīng)用2010
[2]陳火旺、劉春林、譚慶平、趙克佳、劉越.程序設(shè)計編譯原理1980