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