【C语言进阶深度学习记录】十五 编译过程简介
生活随笔
收集整理的這篇文章主要介紹了
【C语言进阶深度学习记录】十五 编译过程简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1 初識編譯器
- 2 總結
1 初識編譯器
我們平時口中所說的編譯器,是廣泛的編譯器。實際上,編譯器包括了以下四個部分:
一個C代碼被編譯為可執行代碼,包括以下幾個過程:
- 下面就對上述的各個過程進行一個詳細的說明:
- 處理所有的注釋,以空格代替
- 將所有的#define 進行宏展開
- 處理條件編譯指令 #if , #ifdef, #elif , #else , #endif
- 處理include,展開被包含的文件
- 保留編譯器需要使用的 #pragma 指令。這個后面的文章還會學習
預處理指令示例:gcc -E file.c -o file.i
-
對預處理所得到的 .i 文件進行詞法分析,語法分析,語義分析,
- 詞法分析:分析關鍵字,標識符,立即數等是否合法
- 語法分析:分析表達式是否遵循語法規則
- 語義分析:在語法分析的基礎上,進一步分析表達式是否合法
-
上面三個分析沒有問題后,進行代碼優化生成相應的匯編代碼文件。
編譯指令示例:gcc -S file.i -o file.s
- 匯編將編譯生成的匯編代碼轉化為機器可以執行的指令
匯編指令示例:gcc -C file.s -o file.o
鏈接的內容比較重要,放到下一篇文章學習講解。
2 總結
- 預處理:處理宏,注釋,以及以 # 開頭的符號
- 編譯: 進行詞法分析,語法分析,語義分析等
- 匯編:將匯編代碼翻譯成機器可以識別的指令。
總結
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】十五 编译过程简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: faster rcnn学习之rpn训练全
- 下一篇: 如何安装Stata 15及网状Meta包