當前位置:首頁 » 編程軟體 » 編譯原理地址空間

編譯原理地址空間

發布時間: 2025-05-27 22:20:36

Ⅰ C語言編譯原理

編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。

1、預處理階段:

主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)

2、匯編階段:

插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。

3、編譯階段:

將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。

4、鏈接階段:

在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。

Ⅱ 編譯和解釋的區別是什麼

1.定義區別

①編譯原理旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。

②匯編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。

2.處理方式區別

①編譯過程與解釋挺像,區別就在於編譯是將所有的源代碼指令一次性成翻目標代碼並執行。

②匯編過程就是把匯編指令一對一地翻譯成01機器碼的過程。而採用這種處理方式的語言只有一類:匯編語言。

3.特點區別

①編譯語言的特點就是不需要解釋器的參與,所以運行比較快,但是編譯好的程序只能在當前平台運行,是個局限性。

②匯編語言是當今世界上歷史最早,應用最廣,功能最強大,運行速度最快的編程語言。但是匯編語言開發工期長,可讀性差,並且不能跨平台編程。

Ⅲ C語言中變數為什麼不能重復定義,我想問一下C語言裡面的具體的機制。

因為定義就意味著給變數分配空間。暫不管重復定義有可能產生空間分配不合理的問題,首先變數名就是一個地址,只不過這個地址是由系統分配的,定義後,地址分出來,存儲空間也被分配出來,變數名--地址就被固定下來。重復定義的話就要分出新地址,分配新的存儲空間,原來的變數名--地址,與後來的變數名--地址,產生沖突,一樣的名字,卻是不同的地址,這是不允許的。
但是這種問題只會出現在標識符的鏈接屬性一樣的情況下,可以簡單的理解為在同一個作用域重復定義是不可以的。如果在兩個函數里分別定義int a,這種定義是可以的。因為這個a處於不同的作用域,就不算是重復定義了。
以上屬於自己的理解,歡迎指正。

熱點內容
如何在伺服器弄潛影盒疊加 發布:2025-05-29 05:29:48 瀏覽:379
python爬網頁內容 發布:2025-05-29 05:29:47 瀏覽:524
ipadpro如何做安卓設備 發布:2025-05-29 05:29:12 瀏覽:674
雲頂利息演算法 發布:2025-05-29 05:24:12 瀏覽:161
小黃車的密碼怎麼開 發布:2025-05-29 05:16:58 瀏覽:127
銳捷伺服器初始ip 發布:2025-05-29 05:07:50 瀏覽:317
微信小視頻壓縮工具 發布:2025-05-29 05:03:20 瀏覽:588
java執行linux腳本 發布:2025-05-29 04:50:09 瀏覽:814
plsql資料庫語句 發布:2025-05-29 04:45:19 瀏覽:234
安卓手機怎麼設置桌面部件 發布:2025-05-29 04:39:33 瀏覽:589