編譯過程

本文均來自狄泰軟件學院


預編譯

處理所有的註釋,以空格代替

將所有的#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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章