編譯程序是什么意思工作過(guò)程是怎么樣的
編譯程序是指把用高級(jí)程序設(shè)計(jì)語(yǔ)言書寫的源程序,那么你對(duì)編譯程序了解多少呢?以下是由學(xué)習(xí)啦小編整理關(guān)于什么是編譯程序的內(nèi)容,希望大家喜歡!
編譯程序的介紹
編譯程序?qū)儆诓捎蒙尚詫?shí)現(xiàn)途徑實(shí)現(xiàn)的翻譯程序。它以高級(jí)程序設(shè)計(jì)語(yǔ)言書寫的源程序作為輸入,而以匯編語(yǔ)言或機(jī)器語(yǔ)言表示的目標(biāo)程序作為輸出。編譯出的目標(biāo)程序通常還要經(jīng)歷運(yùn)行階段,以便在運(yùn)行程序的支持下運(yùn)行,加工初始數(shù)據(jù),算出所需的計(jì)算結(jié)果。
編譯程序詞組可以有兩種認(rèn)識(shí)。
一、編譯程序是一種動(dòng)作,是根據(jù)編譯原理技術(shù),由高級(jí)程序設(shè)計(jì)語(yǔ)言編譯器翻譯成機(jī)器語(yǔ)言二進(jìn)制代碼行為。
二、編譯程序是動(dòng)名詞,特指生成編譯器的軟件程序。
編譯程序的實(shí)現(xiàn)算法較為復(fù)雜。這是因?yàn)樗g的語(yǔ)句與目標(biāo)語(yǔ)言的指令不是一一對(duì)應(yīng)關(guān)系,而是一多對(duì)應(yīng)關(guān)系;同時(shí)也因?yàn)樗幚磉f歸調(diào)用、動(dòng)態(tài)存儲(chǔ)分配、多種數(shù)據(jù)類型,以及語(yǔ)句間的緊密依賴關(guān)系。但是,由于高級(jí)程序設(shè)計(jì)語(yǔ)言書寫的程序具有易讀、易移植和表達(dá)能力強(qiáng)等特點(diǎn),編譯程序廣泛地用于翻譯規(guī)模較大、復(fù)雜性較高、且需要高效運(yùn)行的高級(jí)語(yǔ)言書寫的源程序。
編譯程序的功能
編譯程序的基本功能是把源程序(高級(jí)語(yǔ)言)翻譯成目標(biāo)程序。但是,作為一個(gè)具有實(shí)際應(yīng)用價(jià)值的編譯系統(tǒng),除了基本功能之外,還應(yīng)具備語(yǔ)法檢查、調(diào)試措施、修改手段、覆蓋處理、目標(biāo)程序優(yōu)化、不同語(yǔ)言合用以及人-機(jī)聯(lián)系等重要功能。①語(yǔ)法檢查:檢查源程序是否合乎語(yǔ)法。如果不符合語(yǔ)法,編譯程序要指出語(yǔ)法錯(cuò)誤的部位、性質(zhì)和有關(guān)信息。編譯程序應(yīng)使用戶一次上機(jī),能夠盡可能多地查出錯(cuò)誤。②調(diào)試措施:檢查源程序是否合乎設(shè)計(jì)者的意圖。為此,要求編譯程序在編譯出的目標(biāo)程序中安置一些輸出指令,以便在目標(biāo)程序運(yùn)行時(shí)能輸出程序動(dòng)態(tài)執(zhí)行情況的信息,如變量值的更改、程序執(zhí)行時(shí)所經(jīng)歷的線路等。這些信息有助于用戶核實(shí)和驗(yàn)證源程序是否表達(dá)了算法要求。③修改手段:為用戶提供簡(jiǎn)便的修改源程序的手段。編譯程序通常要提供批量修改手段(用于修改數(shù)量較大或臨時(shí)不易修改的錯(cuò)誤)和現(xiàn)場(chǎng)修改手段(用于運(yùn)行時(shí)修改數(shù)量較少、臨時(shí)易改的錯(cuò)誤)。④覆蓋處理:主要是為處理程序長(zhǎng)、數(shù)據(jù)量大的大型問(wèn)題程序而設(shè)置的。基本思想是讓一些程序段和數(shù)據(jù)公用某些存儲(chǔ)區(qū),其中只存放當(dāng)前要用的程序或數(shù)據(jù);其余暫時(shí)不用的程序和數(shù)據(jù),先存放在磁盤等輔助存儲(chǔ)器中,待需要時(shí)動(dòng)態(tài)地調(diào)入。⑤目標(biāo)程序優(yōu)化:提高目標(biāo)程序的質(zhì)量,即占用的存儲(chǔ)空間少,程序的運(yùn)行時(shí)間短。依據(jù)優(yōu)化目標(biāo)的不同,編譯程序可選擇實(shí)現(xiàn)表達(dá)式優(yōu)化、循環(huán)優(yōu)化或程序全局優(yōu)化。目標(biāo)程序優(yōu)化有的在源程序級(jí)上進(jìn)行,有的在目標(biāo)程序級(jí)上進(jìn)行。⑥不同語(yǔ)言合用:其功能有助于用戶利用多種程序設(shè)計(jì)語(yǔ)言編寫應(yīng)用程序或套用已有的不同語(yǔ)言書寫的程序模塊。最為常見(jiàn)的是高級(jí)語(yǔ)言和匯編語(yǔ)言的合用。這不但可以彌補(bǔ)高級(jí)語(yǔ)言難于表達(dá)某些非數(shù)值加工操作或直接控制、訪問(wèn)外圍設(shè)備和硬件寄存器之不足,而且還有利于用匯編語(yǔ)言編寫核心部分程序,以提高運(yùn)行效率。⑦人-機(jī)聯(lián)系:確定編譯程序?qū)崿F(xiàn)方案時(shí)達(dá)到精心設(shè)計(jì)的功能。目的是便于用戶在編譯和運(yùn)行階段及時(shí)了解內(nèi)部工作情況,有效地監(jiān)督、控制系統(tǒng)的運(yùn)行。
早期編譯程序的實(shí)現(xiàn)方案,是把上述各項(xiàng)功能完全收納在編譯程序之中。然而,習(xí)慣做法是在操作系統(tǒng)的支持下,配置調(diào)試程序、編輯程序和連接裝配程序,用以協(xié)助實(shí)現(xiàn)程序的調(diào)試、修改、覆蓋處理,以及不同語(yǔ)言合用功能。但在設(shè)計(jì)編譯程序時(shí),仍須精心考慮如何與這些子系統(tǒng)銜接等問(wèn)題。
編譯程序的工作過(guò)程
編譯程序必須分析源程序,然后綜合成目標(biāo)程序。首先,檢查源程序的正確性,并把它分解成若干基本成分;其次,再根據(jù)這些基本成分建立相應(yīng)等價(jià)的目標(biāo)程序部分。為了完成這些工作,編譯程序要在分析階段建立一些表格,改造源程序?yàn)橹虚g語(yǔ)言形式,以便在分析和綜合時(shí)易于引用和加工(圖1)。
數(shù)據(jù)結(jié)構(gòu)分析和綜合時(shí)所用的主要數(shù)據(jù)結(jié)構(gòu),包括符號(hào)表、常數(shù)表和中間語(yǔ)言程序。符號(hào)表由源程序中所用的標(biāo)識(shí)符連同它們的屬性組成,其中屬性包括種類(如變量、數(shù)組、結(jié)構(gòu)、函數(shù)、過(guò)程等)、類型(如整型、實(shí)型、字符串、復(fù)型、標(biāo)號(hào)等),以及目標(biāo)程序所需的其他信息。常數(shù)表由源程序中用的常數(shù)組成,其中包括常數(shù)的機(jī)內(nèi)表示,以及分配給它們的目標(biāo)程序地址。中間語(yǔ)言程序是將源程序翻譯為目標(biāo)程序前引入的一種中間形式的程序,其表示形式的選擇取決于編譯程序以后如何使用和加工它。常用的中間語(yǔ)言形式有波蘭表示、三元組、四元組以及間接三元組等。
分析部分源程序的分析是經(jīng)過(guò)詞法分析、語(yǔ)法分析和語(yǔ)義分析三個(gè)步驟實(shí)現(xiàn)的。詞法分析由詞法分析程序(又稱為掃描程序)完成,其任務(wù)是識(shí)別單詞(即標(biāo)識(shí)符、常數(shù)、保留字,以及各種運(yùn)算符、標(biāo)點(diǎn)符號(hào)等)、造符號(hào)表和常數(shù)表,以及將源程序換碼為編譯程序易于分析和加工的內(nèi)部形式。語(yǔ)法分析程序是編譯程序的核心部分,其主要任務(wù)是根據(jù)語(yǔ)言的語(yǔ)法規(guī)則,檢查源程序是否合乎語(yǔ)法。如不合乎語(yǔ)法,則輸出語(yǔ)法出錯(cuò)信息;如合乎語(yǔ)法,則分解源程序的語(yǔ)法結(jié)構(gòu),構(gòu)造中間語(yǔ)言形式的內(nèi)部程序。語(yǔ)法分析的目的是掌握單詞是怎樣組成語(yǔ)句的,以及語(yǔ)句又是如何組成程序的。語(yǔ)義分析程序是進(jìn)一步檢查合法程序結(jié)構(gòu)的語(yǔ)義正確性,其目的是保證標(biāo)識(shí)符和常數(shù)的正確使用,把必要的信息收集和保存到符號(hào)表或中間語(yǔ)言程序中,并進(jìn)行相應(yīng)的語(yǔ)義處理。
看過(guò)“編譯程序的工作過(guò)程”的人還看了: