c語言程式環境

audience_fzn發表於2018-08-02

程式的編譯環境和執行環境

  • 翻譯環境:在這個環境中,原始碼被轉換成可執行的機器指令
  • 執行環境:它用於實際執行程式碼

這倆種環境不必在同一臺機器上

翻譯環境:

  • 組成一個程式的每一個原始檔通過編譯過程轉換成目的碼
  • 每個目標檔案由連結器捆綁在一起,形成一個單一而完整的可執行程式
  • 連結器同時也會引入標準c函式庫中任何被該程式所用到的函式,而且它可以搜尋程式設計師個人的程式庫,將其需要的函式也連結到程式中

程式的編譯過程

C語言的程式從原始碼到二進位制程式都經歷了哪些過程?

預處理->編譯->彙編->連結

  • 預處理:由.c檔案到.i檔案
  • 編譯:由.i檔案到.s檔案
  • 彙編:由.s檔案到.o檔案
  • 連結:由.o檔案到可執行檔案

一、預處理(.i)

  1. 處理預處理指令(#include)
  2. 巨集替換(#define)
  3. 刪除註釋

二、編譯(.s)

  1. 語法分析
  2. 詞法分析
  3. 語義分析
  4. 符號彙總

三、彙編(.o)

  1. 生成符號表
  2. 彙編指令->二進位制指令

四、連結

  1. 合併段表
  2. 符號表的合併和符號表的重定義

執行環境

程式執行的過程:

  1. 程式必須載入記憶體中(一般由作業系統完成)
  2. 開始執行,呼叫mian()函式
  3. 開始執行程式碼。這個時候程式將有一個執行時堆疊(stack),儲存函式的區域性變數和返回地址。同時可以使用靜態記憶體。
  4. 終止程式,正常終止main(),也可能是意外終止

 

 

相關文章