本文均來自狄泰軟件學院
預編譯
處理所有的註釋,以空格代替
將所有的#define刪除,並且展開所有的宏定義
處理條件編譯指令#if,#ifdef,#elif,#else,#endif
處理#include,展開被包含的文件
保留編譯器需要使用的#pragram指令
預處理指令示例:
gcc -E file.c -o file.i
編譯
對預處理文件進行詞法分析,語法分析和語義分析
詞法分析:分析關鍵字,標識符,立即數等是否遵循語法規則
語法分析:分析表達式是否遵循語法規則
語義分析:在語法分析基礎上進一步分析表達式是否合法
分析結束後進行代碼優化生成相應的彙編代碼文件
編譯器指示示例:
gcc -S file.i -o file.s
彙編
彙編器將彙編代碼轉變爲機器的可以執行指令
每條彙編語句幾乎都對應一條機器指令
彙編指示示例:
gcc -c file.s -o file.o