導航:首頁 > 源碼編譯 > 編譯鏈接程序基本結構

編譯鏈接程序基本結構

發布時間:2025-01-09 16:09:20

編譯器編譯原理:預處理,編譯,匯編,鏈接各步驟詳解

編譯器編譯原理:預處理,編譯,匯編,鏈接各步驟詳解

C和C++編譯器的編譯流程主要分為四個階段:預處理、編譯、匯編和鏈接。預處理階段主要處理源代碼中的宏定義和包含文件,將包含的文件內容插入到源代碼中。編譯階段則檢查代碼的語法正確性,並將其轉換為匯編語言。匯編階段將匯編語言轉換為二進制機器指令。鏈接階段則將生成的二進制文件與函數庫鏈接,以實現程序功能。

在預處理階段,編譯器會將源代碼中的文件包含進來,並且用戶可以使用Gcc選項」-E」查看預處理的結果。預處理階段主要處理# include和# define,它會將# include引用的.h文件插入到指定位置,並將源程序中使用到的宏替換為實際字元串。

編譯階段則檢查代碼的語法正確性,並將其轉換為匯編語言。用戶可以使用」-S」選項查看編譯結果。編譯階段生成的文件是文本文件,可以直接用文本處理工具閱讀。編譯階段可以接收.c和.i類型的文件。

匯編階段將匯編語言轉換為二進制機器指令,生成的目標文件可以直接執行。匯編階段可以接收.c, .i, .s的文件。

鏈接階段則將生成的目標文件與函數庫鏈接,實現程序功能。函數庫一般分為靜態庫和動態庫兩種,鏈接動態庫和靜態庫時使用的方法是一樣的,但是如果庫中存在同名的靜態庫文件和動態庫文件,鏈接時默認優先選擇動態庫。可以使用-static選項強制鏈接靜態庫文件。

完成鏈接後,編譯器生成可執行文件,可以直接執行。通過運行可執行文件,可以驗證程序功能是否實現。

㈡ 編譯程序有哪些主要構成成分它們各自的主要功能是什麼

編譯過程分為分析和綜合兩個部分,並進一步劃分為詞法分析、語法分析、語義分析、代碼優化、存儲分配和代碼生成等六個相繼的邏輯步驟。這六個步驟只表示編譯程序各部分之間的邏輯聯系,而不是時間關系。

編譯過程既可以按照這六個邏輯步驟順序地執行,也可以按照平行互鎖方式去執行。在確定編譯程序的具體結構時,常常分若干遍實現。對於源程序或中間語言程序,從頭到尾掃視一次並實現所規定的工作稱作一遍。每一遍可以完成一個或相連幾個邏輯步驟的工作。

例如,可以把詞法分析作為第一遍;語法分析和語義分析作為第二遍;代碼優化和存儲分配作為第三遍;代碼生成作為第四遍。

反之,為了適應較小的存儲空間或提高目標程序質量,也可以把一個邏輯步驟的工作分為幾遍去執行。例如,代碼優化可劃分為代碼優化准備工作和實際代碼優化兩遍進行。

(2)編譯鏈接程序基本結構擴展閱讀

從左至右逐個字元地對源程序進行掃描,產生一個個的單詞符號,把作為字元串的源程序改造成為單詞符號串的中間程序。執行詞法分析的程序稱為詞法分析程序或掃描器。

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

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

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

㈢ 編譯程序是什麼意思編譯是什麼意思

編譯程序(Compiler,compiling program)也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。

解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。

(3)編譯鏈接程序基本結構擴展閱讀:

結構:

編譯過程分為分析和綜合兩個部分,並進一步劃分為詞法分析、語法分析、語義分析、代碼優化、存儲分配和代碼生成等六個相繼的邏輯步驟。這六個步驟只表示編譯程序各部分之間的邏輯聯系,而不是時間關系。

編譯過程既可以按照這六個邏輯步驟順序地執行,也可以按照平行互鎖方式去執行。在確定編譯程序的具體結構時,常常分若干遍實現。對於源程序或中間語言程序,從頭到尾掃視一次並實現所規定的工作稱作一遍。每一遍可以完成一個或相連幾個邏輯步驟的工作。

可以把詞法分析作為第一遍;語法分析和語義分析作為第二遍;代碼優化和存儲分配作為第三遍;代碼生成作為第四遍。反之,為了適應較小的存儲空間或提高目標程序質量,也可以把一個邏輯步驟的工作分為幾遍去執行。

閱讀全文

與編譯鏈接程序基本結構相關的資料

熱點內容
php對資料庫增刪該查 瀏覽:478
如何玩我的世界國際版里的伺服器 瀏覽:64
為什麼安卓數據線沒有創新 瀏覽:151
怎麼在app找到自己的評論 瀏覽:418
計程車查看高鐵信息用什麼app 瀏覽:17
本地地圖伺服器地址 瀏覽:893
學Python還是php 瀏覽:786
sql命令備份資料庫 瀏覽:635
怎麼把ppt文件上傳到伺服器 瀏覽:572
suselinux命令 瀏覽:930
加密文件下載了知道密碼如何解壓 瀏覽:389
PHP開源項目怎麼學 瀏覽:724
lua調用php 瀏覽:946
一套編程多少錢 瀏覽:338
平移演算法圖 瀏覽:66
當人工智慧學會編程 瀏覽:224
冰箱壓縮機工作的聲音 瀏覽:263
即開型彩票的數據設計演算法 瀏覽:819
a星演算法的提出時間 瀏覽:629
學java工程師 瀏覽:89