C 程式的簡單執行過程

2021-08-08 04:28:11 字數 687 閱讀 4488

編譯階段:

main.c---預編譯--->main.i----編譯-->main.s----彙編--->*.o/*.obj(二進位制可重定位目標檔案)

預編譯:刪注釋,#:預編譯指令

編譯:語法、語義分析,**的優化,彙總所有的符號

彙編:把彙編指令轉化成特定平台的機器碼

資料產生符號。

指令只產生乙個符號(函式名)。

1.合併所有obj檔案的段(所有相同屬性的段進行合併,組織在乙個頁面上),並調整段偏移和段長度,合併所有符號表進行符號解析(所有obj符號表中對符號引用的地方都要找到該符號定義的地方),分配記憶體位址

2.符號的重定位(鏈結的核心)。

main.o檔案組成格式:

強符號:已初始化的,在**中不能出現同名的強符號

弱符號:未初始化的

程式的執行---》程序

./a.out

1、建立虛擬位址空間到物理記憶體的對映(建立核心位址對映結構體),建立頁目錄和頁表。

2、載入**段和資料段

3、把可執行的檔案入口位址寫到cpu暫存器裡面

c程式的執行過程

1.hello程式的生命週期是從乙個高階c語言程式開始的,然後為了在系統上執行hello.c程式,每條c語句都必須被其他程式轉化為一系列的低階機器語言指令。2.預處理階段。預處理器 cpp 根據以字元 開頭的命令,修改原始的c程式。include 命令告訴預處理器讀取系統標頭檔案stdio.h的內容...

C 程式執行過程

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

C 程式執行過程

第一部 進入static void main 2.1 執行private system.componentmodel.container components null 作用是container 類是icontainer 介面的預設實現。容器是封裝和跟蹤零個或更多個元件的物件。在此上下文中,包容是指...