編譯程式是什麼意思工作過程是怎麼樣的

  編譯程式是指把用高階程式設計語言書寫的源程式,那麼你對編譯程式瞭解多少呢?以下是由小編整理關於什麼是編譯程式的內容,希望大家喜歡!

  編譯程式的介紹

  編譯程式屬於採用生成性實現途徑實現的翻譯程式。它以高階程式設計語言書寫的源程式作為輸入,而以組合語言或機器語言表示的目標程式作為輸出。編譯出的目標程式通常還要經歷執行階段,以便在執行程式的支援下執行,加工初始資料,算出所需的計算結果。

  編譯程式片語可以有兩種認識。

  一、編譯程式是一種動作,是根據編譯原理技術,由高階程式設計語言編譯器翻譯成機器語言二進位制程式碼行為。

  二、編譯程式是動名詞,特指生成編譯器的軟體程式。

  編譯程式的實現演算法較為複雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關係,而是一多對應關係;同時也因為它要處理遞迴呼叫、動態儲存分配、多種資料型別,以及語句間的緊密依賴關係。但是,由於高階程式設計語言書寫的程式具有易讀、易移植和表達能力強等特點,編譯程式廣泛地用於翻譯規模較大、複雜性較高、且需要高效執行的高階語言書寫的源程式。

  編譯程式的功能

  編譯程式的基本功能是把源程式高階語言翻譯成目標程式。但是,作為一個具有實際應用價值的編譯系統,除了基本功能之外,還應具備語法檢查、除錯措施、修改手段、覆蓋處理、目標程式優化、不同語言合用以及人-機聯絡等重要功能。①語法檢查:檢查源程式是否合乎語法。如果不符合語法,編譯程式要指出語法錯誤的部位、性質和有關資訊。編譯程式應使使用者一次上機,能夠儘可能多地查出錯誤。②除錯措施:檢查源程式是否合乎設計者的意圖。為此,要求編譯程式在編譯出的目標程式中安置一些輸出指令,以便在目標程式執行時能輸出程式動態執行情況的資訊,如變數值的更改、程式執行時所經歷的線路等。這些資訊有助於使用者核實和驗證源程式是否表達了演算法要求。③修改手段:為使用者提供簡便的修改源程式的手段。編譯程式通常要提供批量修改手段用於修改數量較大或臨時不易修改的錯誤和現場修改手段用於執行時修改數量較少、臨時易改的錯誤。④覆蓋處理:主要是為處理程式長、資料量大的大型問題程式而設定的。基本思想是讓一些程式段和資料公用某些儲存區,其中只存放當前要用的程式或資料;其餘暫時不用的程式和資料,先存放在磁碟等輔助儲存器中,待需要時動態地調入。⑤目標程式優化:提高目標程式的質量,即佔用的儲存空間少,程式的執行時間短。依據優化目標的不同,編譯程式可選擇實現表示式優化、迴圈優化或程式全域性優化。目標程式優化有的在源程式級上進行,有的在目標程式級上進行。⑥不同語言合用:其功能有助於使用者利用多種程式設計語言編寫應用程式或套用已有的不同語言書寫的程式模組。最為常見的是高階語言和組合語言的合用。這不但可以彌補高階語言難於表達某些非數值加工操作或直接控制、訪問外圍裝置和硬體暫存器之不足,而且還有利於用匯編語言編寫核心部分程式,以提高執行效率。⑦人-機聯絡:確定編譯程式實現方案時達到精心設計的功能。目的是便於使用者在編譯和執行階段及時瞭解內部工作情況,有效地監督、控制系統的執行。

  早期編譯程式的實現方案,是把上述各項功能完全收納在編譯程式之中。然而,習慣做法是在作業系統的支援下,配置除錯程式、編輯程式和連線裝配程式,用以協助實現程式的除錯、修改、覆蓋處理,以及不同語言合用功能。但在設計編譯程式時,仍須精心考慮如何與這些子系統銜接等問題。

  編譯程式的工作過程

  編譯程式必須分析源程式,然後綜合成目標程式。首先,檢查源程式的正確性,並把它分解成若干基本成分;其次,再根據這些基本成分建立相應等價的目標程式部分。為了完成這些工作,編譯程式要在分析階段建立一些表格,改造源程式為中間語言形式,以便在分析和綜合時易於引用和加工圖1。

  資料結構分析和綜合時所用的主要資料結構,包括符號表、常數表和中間語言程式。符號表由源程式中所用的識別符號連同它們的屬性組成,其中屬性包括種類如變數、陣列、結構、函式、過程等、型別如整型、實型、字串、復型、標號等,以及目標程式所需的其他資訊。常數表由源程式中用的常陣列成,其中包括常數的機內表示,以及分配給它們的目標程式地址。中間語言程式是將源程式翻譯為目標程式前引入的一種中間形式的程式,其表示形式的選擇取決於編譯程式以後如何使用和加工它。常用的中間語言形式有波蘭表示、三元組、四元組以及間接三元組等。

  分析部分源程式的分析是經過詞法分析、語法分析和語義分析三個步驟實現的。詞法分析由詞法分析程式又稱為掃描程式完成,其任務是識別單詞即識別符號、常數、保留字,以及各種運算子、標點符號等、造符號表和常數表,以及將源程式換碼為編譯程式易於分析和加工的內部形式。語法分析程式是編譯程式的核心部分,其主要任務是根據語言的語法規則,檢查源程式是否合乎語法。如不合乎語法,則輸出語法出錯資訊;如合乎語法,則分解源程式的語法結構,構造中間語言形式的內部程式。語法分析的目的是掌握單詞是怎樣組成語句的,以及語句又是如何組成程式的。語義分析程式是進一步檢查合法程式結構的語義正確性,其目的是保證識別符號和常數的正確使用,把必要的資訊收集和儲存到符號表或中間語言程式中,並進行相應的語義處理。


編譯程式的工作過程