外部編譯子程式

外部編譯子程式

編譯(compilation , compile)是指利用編譯程式從源語言編寫的源程式產生目標程式的過程。外部編譯子程式是指電腦程式執行過程調用的子程式,在程式調用之前已經完成了編譯,可以直接調用執行,這種子程式一般獨立於運行程式的源碼檔案。外部編譯子程式可以加快程式執行速度和便於管理。

基本介紹

  • 中文名:外部編譯子程式
  • 外文名:externally-compiled subprogram
  • 學科:計算機
  • 定義:不需編譯可以直接調用執行子程式
  • 有關術語:子程式
  • 作用:便於管理、程式移植
簡介,子程式,編譯,

簡介

外部編譯就是讓源碼檔案和編譯生成的工程檔案分開,將編譯生成的工程檔案放在一個單獨的目錄下面。外部編譯子程式簡單來說是指編譯生成的檔案與源碼檔案分開,放在一個獨立的檔案中,可以做到一次編譯多次調用,加快了程式執行速度和便於對編譯檔案管理和移植到不同的平台。源碼就是指編寫的最原始程式的代碼。運行的軟體是要經過編寫的,程式設計師編寫程式的過程中需要他們的“語言”。音樂家用五線譜和音符,建築師用圖紙和筆,那程式設計師的工作的語言就是“源碼”了。人們平時使用軟體時就是程式把“源碼”翻譯成我們可直觀的形式表現出來供我們使用的。

子程式

子程式是指在電腦程式中,能夠完成特定解題功能的一連串指令。它可以編入不同的主程式,成為主程式的一部分;也可以在主程式中的不同地方使用。它是整個程式中常用的、且有共同性的獨立部分。或指低級語言中的子例程在高級語言中的相應程式單位。二者亦可統稱為子程式。這種程式單位一旦定義後,便可在一定範圍內多次調用,從而避免了相同或相似的程式段在程式中多次出現。這一機制體現了計算過程的抽象。子程式有兩個側面:一個是定義計算過程的定義方面,稱為子程式定義或子程式說明;另一個是使用該計算過程的調用方面,稱為子程式調用。電腦程式是計算任務的處理對象和處理規則的描述。計算任務指以計算機為處理工具的任務,處理對象指數據(數字、文字、圖像等),處理規則一般指處理動作和步驟。在低級語言中,程式是一組指令和數據;在高級語言中,程式一般是一組說明、語句及數據。程式通過裝入計算機中並由機器執行它而發揮作用。程式的基本成分包括程式、子程式、子程式、協同程式、遞歸程式和模組。

編譯

計算機語言之所以能由單一的機器語言發展到現今的數千種高級語言,就是因為有了編譯技術。 編譯技術是計算機語言發展的支柱,也是計算機科學中發展最迅速、最成熟的一個分支,它集中體現了計算機發展的成果與精華。編譯技術的核心思想就是把同樣的邏輯結構和思想從一種語言表示轉化為另外一種語言表示。 從高級語言,甚至是運行於虛擬平台的高級語言,到機器語言,最終到硬體執行的物理信號,這一層層轉化,無一不涉及到“編譯”這個概念的套用。因此,編譯技術是人類智慧到機器執行的橋樑,軟體到硬體層層推進的銜接力量。編譯程式是一個足夠複雜的程式,語言功能的完善,硬體結構的發展,環境的友好要求,都對編譯程式提出了更高的要求。因此一個編譯系統的構造並非易事,對完全想用手工方法來構造編譯器來說更是如此。要構造一個完全獨立的全新的編譯器可能性很小,大部分可在現有編譯器的基礎上擴展,有的採用自展的方式,有的則用自編譯的方式。採用自編譯方式生成編譯程式的思想是先用目標機的彙編語言或機器語言對源程式的核心部分構造一個小小的編譯程式,再以它為工具構造一個能夠編譯更多語言成分的較大編譯程式。 如此擴展下去,就像滾雪球一樣,越滾越大,最後生成人們所期望的整個源語言的編譯程式。上世紀70 年代, 隨著諸多種類的高級程式設計語言的出現和軟體開發自動化技術的提高,編譯程式的構造工具陸續誕生,如70 年代 Bell 實驗室推出的 LEX 和 YACC,這兩種工具在各種語言編譯程式的實現中還廣為套用。 其中 LEX 是詞法分析器的自動生成工具,YACC 是語法分析器的自動生成工具。
編譯程式必須分析源程式,然后綜合成目標程式。首先,檢查源程式的正確性,並把它分解成若干基本成分;其次,再根據這些基本成分建立相應等價的目標程式部分。為了完成這些工作,編譯程式要在分析階段建立一些表格,改造源程式為中間語言形式,以便在分析和綜合時易於引用和加工。
數據結構分析和綜合時所用的主要數據結構,包括符號表、常數表和中間語言程式。符號表由源程式中所用的標識符連同它們的屬性組成,其中屬性包括種類(如變數、數組、結構、函式、過程等)、類型(如整型、實型、字元串、復型、標號等),以及目標程式所需的其他信息。常數表由源程式中用的常數組成,其中包括常數的機內表示,以及分配給它們的目標程式地址。中間語言程式是將源程式翻譯為目標程式前引入的一種中間形式的程式,其表示形式的選擇取決於編譯程式以後如何使用和加工它。常用的中間語言形式有波蘭表示、三元組、四元組以及間接三元組等。
分析部分源程式的分析是經過詞法分析、語法分析和語義分析三個步驟實現的。詞法分析由詞法分析程式(又稱為掃描程式)完成,其任務是識別單詞(即標識符、常數、保留字,以及各種運算符、標點符號等)、造符號表和常數表,以及將源程式換碼為編譯程式易於分析和加工的內部形式。語法分析程式是編譯程式的核心部分,其主要任務是根據語言的語法規則,檢查源程式是否合乎語法。如不合乎語法,則輸出語法出錯信息;如合乎語法,則分解源程式的語法結構,構造中間語言形式的內部程式。語法分析的目的是掌握單詞是怎樣組成語句的,以及語句又是如何組成程式的。語義分析程式是進一步檢查合法程式結構的語義正確性,其目的是保證標識符和常數的正確使用,把必要的信息收集和保存到符號表或中間語言程式中,並進行相應的語義處理。

相關詞條

熱門詞條

聯絡我們