• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    淺析編譯原理中編譯工作的基本流程及其實(shí)現(xiàn)

    2019-03-30 03:30:00王佳林張美玲高涵
    中國(guó)新通信 2019年24期

    王佳林 張美玲 高涵

    【摘要】? ? 編譯原理是研究如何將各種編程語(yǔ)言轉(zhuǎn)換為機(jī)器語(yǔ)言的一門科學(xué)。本文主要介紹了編譯原理中編譯工作的基本流程,以及各個(gè)流程在整個(gè)編譯工作過(guò)程中起到的作用,同時(shí)本文對(duì)編譯工作在實(shí)際的應(yīng)用中是如何實(shí)現(xiàn)的這一問(wèn)題進(jìn)行了探討。

    【關(guān)鍵詞】? ? 編譯技術(shù)? ? 機(jī)器語(yǔ)言? ? 詞法分析? ? 語(yǔ)法分析

    一、編譯技術(shù)的產(chǎn)生

    最早期的計(jì)算機(jī)編程是用機(jī)器語(yǔ)言編程,這種直接跟計(jì)算機(jī)硬件進(jìn)行信息溝通的方式有很大的局限性。雖然機(jī)器語(yǔ)言能夠被計(jì)算機(jī)硬件直接識(shí)別并執(zhí)行,具有靈活速度快的特點(diǎn),但是機(jī)器語(yǔ)言對(duì)編程人員的要求門檻太高,它不容易被理解接受,并且記憶困難,極易出錯(cuò)。編程人員使用機(jī)器語(yǔ)言編程往往要花費(fèi)大量的時(shí)間和精力在編寫程序上,這大大影響了編程效率。為了提高程序的編寫效率,增強(qiáng)程序的可讀性,匯編語(yǔ)言和高級(jí)語(yǔ)言隨著科技的發(fā)展?jié)u漸出現(xiàn)。匯編語(yǔ)言較為基礎(chǔ),是高級(jí)語(yǔ)言形成過(guò)程中的中間產(chǎn)物。高級(jí)語(yǔ)言封裝性更強(qiáng),在操作上更加簡(jiǎn)便,在編寫和理解上也有更好的可讀性。高級(jí)語(yǔ)言和匯編語(yǔ)言都需要進(jìn)行加工才能被計(jì)算機(jī)識(shí)別,這就需要一個(gè)能將這些指令轉(zhuǎn)化成機(jī)器指令的翻譯程序——編譯器。因?yàn)橛?jì)算機(jī)能夠識(shí)別的只有二進(jìn)制代碼,如何讓計(jì)算機(jī)識(shí)別并執(zhí)行這些語(yǔ)言呢,這就是編譯原理所要研究的問(wèn)題。

    二、編譯的基本流程

    (一)詞法分析階段。首先是詞法分析階段。在詞法分析階段中源程序按照從左到右的順序被依次掃描,掃描過(guò)程中源程序的字符流會(huì)按照規(guī)定好的構(gòu)詞規(guī)則被識(shí)別成單詞符號(hào),這一工作由詞法分析程序完成。此外,在詞法分析階段,詞法分析器除了能完成單詞符號(hào)的識(shí)別工作,還能夠?qū)Τ绦蛑械囊恍┬畔⑦M(jìn)行過(guò)濾,同時(shí)詞法分析程序可以將編譯時(shí)產(chǎn)生的錯(cuò)誤信息對(duì)應(yīng)到源程序的具體位置,便于程序修改。(二)語(yǔ)法分析階段。在語(yǔ)法分析階段,語(yǔ)法分析程序會(huì)將詞法分析中產(chǎn)生的單詞序列劃分成各類語(yǔ)法短語(yǔ),并對(duì)源程序的結(jié)構(gòu)進(jìn)行正確性的判斷,檢查源程序中是否存在語(yǔ)法錯(cuò)誤。根據(jù)語(yǔ)法分析中采用的方法的不同,語(yǔ)法分析在具體實(shí)現(xiàn)時(shí)又分為好多方法,其中每一種方法都有各自的適用情況和特點(diǎn)。(三)語(yǔ)義分析和中間代碼產(chǎn)生階段。在語(yǔ)義分析和中間代碼生成階段中,首先要進(jìn)行的是語(yǔ)義分析工作。顧名思義語(yǔ)義分析主要進(jìn)行語(yǔ)義審查,編譯器會(huì)審查程序中語(yǔ)法結(jié)構(gòu)的靜態(tài)語(yǔ)義。程序中可能存在一些語(yǔ)法正確但是在規(guī)定限制下沒(méi)有意義的語(yǔ)句。語(yǔ)義分析的分析范圍有確定類型、類型檢查等。在完成語(yǔ)義分析并且分析無(wú)誤后,進(jìn)入中間代碼產(chǎn)生階段,生成中間代碼,根據(jù)實(shí)際情況的不同中間代碼又分為逆波蘭式、三元式、四元式等形式,這些都是在具體程序內(nèi)部涉及到的內(nèi)容。(四)優(yōu)化。所謂中間代碼優(yōu)化指的是在不改變?cè)闯绦蜻\(yùn)行結(jié)果的前提下,對(duì)中間代碼或目標(biāo)代碼進(jìn)行等價(jià)替換。優(yōu)化后所產(chǎn)生的目標(biāo)代碼運(yùn)行時(shí)間更短,占用空間更小、效率更加高效。在整個(gè)編譯過(guò)程中都可以增加優(yōu)化過(guò)程,但最突出的還是體現(xiàn)在中間代碼的優(yōu)化上。(五)目標(biāo)代碼生成。目標(biāo)代碼生成是編譯的最后一個(gè)階段,在這一階段中,主要完成的任務(wù)是將前面產(chǎn)生的中間代碼轉(zhuǎn)化成特定機(jī)器上的機(jī)器語(yǔ)言或匯編語(yǔ)言。因?yàn)橛?jì)算機(jī)只能識(shí)別機(jī)器語(yǔ)言,如果生成的目標(biāo)代碼是匯編語(yǔ)言的形式,要將匯編代碼再轉(zhuǎn)化成機(jī)器代碼才能讓計(jì)算機(jī)運(yùn)行。

    三、編譯的實(shí)現(xiàn)

    (一)預(yù)處理。預(yù)處理是指在對(duì)源程序進(jìn)行編譯之前,要對(duì)程序中的一些特殊命令進(jìn)行處理的工作。c語(yǔ)言中,編譯預(yù)處理命令以#開(kāi)頭,這些預(yù)處理的命令被預(yù)處理程序處理替換后由編譯程序進(jìn)行進(jìn)一步加工。以c語(yǔ)言為例,編譯預(yù)處理有宏定義、文件包含、條件編譯等,程序人員編寫的*.c源程序文件經(jīng)過(guò)預(yù)處理程序處理后,隨后進(jìn)入編譯程序進(jìn)行編譯最后生成目標(biāo)程序*.obj。編譯預(yù)處理完成了標(biāo)識(shí)符的替代工作,為編譯的順利進(jìn)行打下基礎(chǔ)。(二)編譯。在編譯階段中對(duì)經(jīng)過(guò)了預(yù)處理的源文件進(jìn)行一連串的編譯工作,包括詞法分析,語(yǔ)法分析,語(yǔ)義分析以及優(yōu)化等操作,最后生成相應(yīng)的匯編代碼。編譯是通過(guò)編譯器實(shí)現(xiàn)的,在編譯器中會(huì)進(jìn)行上述一系列的操作。(三)匯編。匯編工作由匯編器實(shí)現(xiàn),匯編器負(fù)責(zé)匯編代碼向機(jī)器代碼的轉(zhuǎn)化工作,根據(jù)匯編指令和機(jī)器指令的對(duì)應(yīng)關(guān)系表,將匯編代碼轉(zhuǎn)化成可執(zhí)行文件,只有轉(zhuǎn)化成計(jì)算機(jī)能夠識(shí)別的二進(jìn)制代碼,才可以交給計(jì)算機(jī)執(zhí)行。(四)鏈接。最后就是鏈接操作,雖然在匯編階段源程序已經(jīng)轉(zhuǎn)化成了計(jì)算機(jī)能夠識(shí)別的二進(jìn)制代碼的形式,但是還要完成一些其他工作。因?yàn)樵谠闯绦蛑锌赡芤昧似渌^文件中的函數(shù),或者調(diào)用了其他庫(kù)中已有的函數(shù),只有將這些全部鏈接在一起,才能保證程序的正確執(zhí)行,這就是鏈接操作。很多時(shí)候開(kāi)發(fā)人員不用自己去實(shí)現(xiàn)一些函數(shù),而可以直接調(diào)用現(xiàn)有庫(kù)中的函數(shù),既節(jié)省了時(shí)間,又可以減小出錯(cuò)率。鏈接技術(shù)的實(shí)現(xiàn)大大降低了代碼的復(fù)寫率,提高了程序的開(kāi)發(fā)效率。

    結(jié)語(yǔ):編譯技術(shù)像是在高級(jí)語(yǔ)言和計(jì)算機(jī)硬件系統(tǒng)之間架起了一座橋梁,它將高級(jí)語(yǔ)言進(jìn)行編譯處理使其能夠在計(jì)算機(jī)上執(zhí)行。自從有了編譯技術(shù),程序編寫的效率明顯提升,計(jì)算機(jī)編程的門檻大大降低,使得更多的學(xué)者能夠投身于計(jì)算機(jī)編程領(lǐng)域。可以說(shuō)編譯技術(shù)是計(jì)算機(jī)領(lǐng)域中的核心技術(shù),研究編譯技術(shù)對(duì)計(jì)算機(jī)技術(shù)的發(fā)展有著重要意義。

    參? 考? 文? 獻(xiàn)

    [1]徐紅,陸紅陽(yáng).編譯原理實(shí)驗(yàn)動(dòng)態(tài)演示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2005(27):86-88.

    睢宁县| 科尔| 株洲市| 外汇| 威宁| 泰州市| 手机| 马尔康县| 来宾市| 金坛市| 百色市| 高阳县| 昌邑市| 富源县| 琼海市| 双桥区| 城口县| 望都县| 灌南县| 古丈县| 广南县| 陆川县| 乌拉特后旗| 淮阳县| 东莞市| 剑河县| 克拉玛依市| 马边| 墨脱县| 会宁县| 澎湖县| 凤翔县| 吉隆县| 东莞市| 会东县| 张家界市| 万州区| 安岳县| 商水县| 云浮市| 东台市|