首頁  >  文章  >  能夠將高階語言原始程式加工為目標程式的系統軟體是什麼

能夠將高階語言原始程式加工為目標程式的系統軟體是什麼

青灯夜游
青灯夜游原創
2022-07-26 14:58:4111675瀏覽

將高階語言原始程式加工為目標程式的系統軟體是「編譯程式」。編譯程式是指把用高階程式設計語言書寫的原始程序,翻譯成等價的機器語言格式目標程式的翻譯程序。編譯程式把一個原始程式翻譯成目標程式的工作流程分為五個階段:詞法分析;語法分析;中間程式碼生成;程式碼最佳化;目標程式碼生成;主要是進行詞法分析和語法分析,又稱為原始程式碼分析,分析過程中發現語法錯誤,給予提示訊息。

能夠將高階語言原始程式加工為目標程式的系統軟體是什麼

本教學操作環境:windows7系統、Dell G3電腦。

能將高階語言編寫的原始程式加工為目標程式的系統軟體是「編譯程式」。

編譯程序(Compiler,compiling program),也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。編譯程式屬於採用生成性實現途徑實現的翻譯程式。它以高階程式設計語言書寫的原始程式作為輸入,而以組合語言或機器語言表示的目標程式作為輸出。編譯出的目標程式通常還要經歷運行階段,以便在執行程式的支援下運行,加工初始數據,算出所需的計算結果。

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

編譯程式的特點:

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

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

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

編譯程式的工作過程

編譯程式也叫編譯系統,是把用高階語言寫的過程導向的原始程式翻譯成目標程式的語言處理程序。編譯程式把一個原始程式翻譯成目標程式的工作流程分為五個階段:詞法分析;語法分析;中間程式碼生成;程式碼最佳化;目標程式碼生成。主要是進行詞法分析和語法分析,又稱為原始程式分析,分析過程中發現有語法錯誤,給出提示訊息。

(1) 詞法分析

詞法分析的任務是對由字元組成的單字進行處理,從左到右逐個字元地對原始程式進行掃描,產生一個個的單字符號,把作為字串的原始程式改造成單字符號字串的中間程式。執行詞法分析的程序稱為詞法分析程式或掃描器。

原始程式中的單字符號經掃描器分析,一般產生二元式:單字種別;單字本身的值。單字種別通常用整數編碼,如果一個種別只含一個單字符號,那麼對這個單字符號,種別編碼就完全代表它本身的值了。若一個種別含有許多個單字符號,那麼,對於它的每個單字符號,除了給出種別編碼以外,還應給出自身的值。

詞法分析器一般來說有兩種方法建構:手工建構和自動生成。手工構造可使用狀態圖進行工作,自動產生使用確定的有限自動機來實現。

(2) 語法分析

編譯程式的語法分析器以單字符號作為輸入,分析單字符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,以該語言使用的語法規則分析檢查每個語句是否有正確的邏輯結構,程序是最終的一個語法單位。編譯程式的語法規則可用上下文無關文法來刻畫。

語法分析的方法分為兩種:自上而下分析法和自下而上分析法。由上而下就是從文法的開始符號出發,向下推導,推出句子。而由下而上分析法採用的是移進歸約法,基本思想是:用一個寄存符號的先進後出棧,把輸入符號一個一個地移進棧裡,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號。

(3) 中間程式碼產生

中間程式碼是原始程式的一種內部表示,或稱為中間語言。中間程式碼的作用是可使編譯程式的結構在邏輯上更為簡單明確,特別是可使目標程式碼的最佳化比較容易實現。中間代碼即為中間語言程序,中間語言的複雜性介於原始程式語言和機器語言之間。中間語言有多種形式,常見的有逆波蘭記號、四元式、三元式和樹。

(4) 程式碼最佳化

程式碼最佳化是指對程式進行多種等價變換,使得從變換後的程式出發,能產生更有效的目標代碼。所謂等價,是指不改變程式的運作結果。所謂有效,主要指目標程式碼運行時間較短,且佔用的儲存空間較小。這種變換稱為最佳化。

有兩類最佳化:一類是對語法分析後的中間程式碼進行最佳化,它不依賴特定的電腦;另一類是在產生目標程式碼時進行的,它在很大程度上依賴具體的計算機。對於前一類最佳化,根據它所涉及的程序範圍可分為局部最佳化、循環最佳化和全域最佳化三個不同的層級。

(5) 目標程式碼產生

目標程式碼產生是編譯的最後一個階段。目標程式碼產生器把語法分析後或最佳化後的中間程式碼轉換成目標程式碼。目標程式碼有三種形式:

① 可以立即執行的機器語言程式碼,所有位址都重定位;

② 待組裝的機器語言模組,當需要執行時,由連線裝入程式把它們和某些執行程式連接起來,轉換成能執行的機器語言程式碼;

③ 彙編語言程式碼,須經過彙編程式彙編後,成為可執行的機器語言程式碼。

目標程式碼產生階段應考慮直接影響到目標程式碼速度的三個問題:一是如何產生較短的目標程式碼;二是如何充分利用電腦中的暫存器,減少目標程式碼存取儲存單元的次數;三是如何充分利用電腦指令系統的特點,以提高目標程式碼的品質。

更多相關知識,請造訪常見問題欄位!

以上是能夠將高階語言原始程式加工為目標程式的系統軟體是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn