創建和編譯源檔案

創建和編譯源檔案

源檔案一般指用彙編語言或高級語言寫出來的代碼保存為檔案後的結果。創建和編譯源檔案在這裡可以分為兩個步驟,第一步是指在創建一個新源檔案時,系統首先要為新源檔案分配必要的外存空間,並在檔案系統的目錄中,為之建立一個目錄項;第二步是指利用編譯程式將源檔案編譯成目標檔案的過程。

基本介紹

  • 中文名:創建和編譯源檔案
  • 外文名:Create and Compile source files
  • 學科:計算機
  • 步驟:創建、編譯
  • 有關術語:源檔案
  • 領域:作業系統
簡介,源檔案,編譯,詞法分析,語法分析,中間代碼,代碼最佳化,目標代碼,

簡介

檔案是指由創建者所定義的、具有檔案名稱的一組相關元素的集合。一個檔案必須要有一個檔案名稱,它通常是由一串 ASCII 碼或(和)漢字構成的, 名字的長度因系統不同而異。如在有的系統中把名字規定為 8 個字元,而在有的系統中又規定可用 14 個字元。此外,檔案應具有自己的屬性,屬性可以包括:(1) 檔案類型。(2) 檔案長度。(3) 檔案的物理位置。(4) 檔案的建立時間。
創建和編譯源檔案是兩個過程,首先創建一個新源檔案,在這個過程中,檔案創建者會定義檔案的檔案名稱及有關屬性,系統為新源檔案分配必要的外存空間;其次是用編譯程式產生目標檔案的動作。

源檔案

這是指由源程式和數據構成的檔案。通常由終端或輸入設備輸入的源程式和數據所形成的檔案都屬於源檔案。它通常是由 ASCII 碼或漢字所組成的。源檔案是相對目標檔案和執行檔而言的。目標檔案是指源檔案經過編譯程式產生的能被CPU直接識別二進制檔案。執行檔就是將目標檔案連線後形成的執行檔,當然也是二進制的。例如在C++的原始碼檔案分為兩類:頭檔案(Headerfile)和源檔案(Sourcecodefile)。頭檔案用於存放對類型定義、函式聲明、全局變數聲明等實體的聲明,作為對外接口;而源程式檔案存放類型的實現、函式體、全局變數定義。

編譯

編譯(compilation , compile) 是利用編譯程式從源語言編寫的源程式產生目標程式的過程,一般通過編譯程式來實現。將某一種程式設計語言寫的程式翻譯成等價的另一種語言的程式的程式,稱之為編譯程式(compiler)。編譯程式把一個源程式翻譯成目標程式的工作過程分為五個階段:詞法分析語法分析;語義檢查和中間代碼生成代碼最佳化目標代碼生成。主要是進行詞法分析語法分析,又稱為源程式分析,分析過程中發現有語法錯誤,給出提示信息。

詞法分析

詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程式進行掃描,產生一個個的單詞符號,把作為字元串的源程式改造成為單詞符號串的中間程式。執行詞法分析的程式稱為詞法分析程式或掃描器。
源程式中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那么對這個單詞符號,種別編碼就完全代表它自身的值了。若一個種別含有許多個單詞符號,那么,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。
詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。

語法分析

編譯程式的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程式,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程式是最終的一個語法單位。編譯程式的語法規則可用上下文無關文法來刻畫。
語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發,向下推導,推出句子。而自下而上分析法採用的是移進歸約法,基本思想是:用一個暫存符號的先進後出棧,把輸入符號一個一個地移進棧里,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號。

中間代碼

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

代碼最佳化

代碼最佳化是指對程式進行多種等價變換,使得從變換後的程式出發,能生成更有效的目標代碼。所謂等價,是指不改變程式的運行結果。所謂有效,主要指目標代碼運行時間較短,以及占用的存儲空間較小。這種變換稱為最佳化。
有兩類最佳化:一類是對語法分析後的中間代碼進行最佳化,它不依賴於具體的計算機;另一類是在生成目標代碼時進行的,它在很大程度上依賴於具體的計算機。對於前一類最佳化,根據它所涉及的程式範圍可分為局部最佳化、循環最佳化和全局最佳化三個不同的級別。

目標代碼

目標代碼生成是編譯的最後一個階段。目標代碼生成器把語法分析後或最佳化後的中間代碼變換成目標代碼。目標代碼有三種形式:
① 可以立即執行的機器語言代碼,所有地址都重定位;
② 待裝配的機器語言模組,當需要執行時,由連線裝入程式把它們和某些運行程式連線起來,轉換成能執行的機器語言代碼;
③ 彙編語言代碼,須經過彙編程式彙編後,成為可執行的機器語言代碼。
目標代碼生成階段應考慮直接影響到目標代碼速度的三個問題:一是如何生成較短的目標代碼;二是如何充分利用計算機中的暫存器,減少目標代碼訪問存儲單元的次數;三是如何充分利用計算機指令系統的特點,以提高目標代碼的質量。

相關詞條

熱門詞條

聯絡我們