1. 程式人生 > >程式執行過程

程式執行過程

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

(1)預處理

(2)編譯

(3)彙編

(4)連結

1.關於預處理:

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

2.關於編譯:

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

3.關於彙編:

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

4.關於連結:

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


例子:以執行原始檔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