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