程式執行過程

2021-08-17 05:56:19 字數 794 閱讀 6582

程式的執行過程大致分為以下四的步驟:

(1)預處理

(2)編譯

(3)彙編

(4)鏈結

1.關於預處理:

預處理階段的工作基本上是對源程式做「替代」,主要有:巨集替換、條件編譯、標頭檔案展開、去除注釋;經過這番替換之後,就會生成乙個沒有巨集定義,沒有條件編譯、沒有特殊符號的輸出檔案。

2.關於編譯:

編譯階段的工作就是,將上一步預處理後的輸出檔案,即只有常量、變數、以及程式語言的關鍵字的檔案,進行詞法分析、語法分析、語義分析、以及優化後產生的彙編**檔案。

3.關於彙編:

彙編階段的工作就是,將上一步得到的彙編**檔案翻譯成目標機器指令的過程。

由於經過以上步驟生成的目標檔案不能立即被執行,因為可能有這樣的情況:乙個原始檔引用了另乙個原始檔,或者乙個原始檔呼叫了庫檔案等;因此,鏈結階段的主要工作就是,將所有有關的目標檔案彼此相連,使得它們成為乙個能讓作業系統執行的整體。其中包含的工作有:位址和空間的分配、符號重定位等工作。

例子:以執行原始檔test.c為例,在

linux

下上述每一步的操作指令。

(1)預處理

gcc -e test.c -o test.i

(2)編譯

gcc -s test.i -o test.s

(3)彙編

gcc -c test.s -o test.o

(4)鏈結

gcc test.o

程式執行過程

要理解乙個程式的執行過程,首先要理解什麼是編譯器。我們用c語言寫的程式,計算機只能識別機器語言 二進位制指令 計算機並不能理解。因此,必須 將c語言轉換為機器語言。編譯器就是用來實現這一功能的。編譯器將源 檔案按照一定的對應規則映射程計算機能夠識別的二進位制指令 關於原始檔 目標檔案和可執行檔案 原...

程式執行過程

程式執行過程 不同作業系統可執行檔案的格式不同 linux elf execuatable and linkable file format windows pe portable executable format 這也是為什麼乙個程式無法同時在linux和windows下執行 這裡舉例elf檔案...

C 程式執行過程

要理解乙個程式的執行過程,首先要理解什麼是編譯器。我們用c語言寫的程式,計算機只能識別機器語言 二進位制指令 計算機並不能理解。因此,必須將c語言轉換為機器語言。編譯器就是用來實現這一功能的。編譯器將源 檔案按照一定的對應規則映射程計算機能夠識別的二進位制指令。關於原始檔 目標檔案和可執行檔案 原始...