什么是編譯器?
編譯器是指從高級語言到低級語言的翻譯器,同樣的技術可用于不同種類語言之間的翻譯。編譯器是一種電腦程序,它會將用某種編程語言寫成的源代碼(原始語言),轉換成另一種編程語言(目標語言)。
什么是編譯器
編譯器就是將“一種語言(通常為高級語言)”翻譯為“另一種語言(通常為低級語言)”的程序。
編譯器的工作流程
現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)
編譯器的作用
它主要的目的是將便于人編寫,閱讀,維護的高級計算機語言所寫作的源代碼程序,翻譯為計算機能解讀、運行的低階機器語言的程序,也就是可執行文件。編譯器將原始程序(Source program)作為輸入,翻譯產生使用目標語言(Target language)的等價程序。源代碼一般為高階語言 (High-level language), 如 Pascal、C、C 、C# 、Java 等,而目標語言則是匯編語言或目標機器的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
高級計算機語言便于人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。源代碼一般為高級語言 (High-level language), 如 Pascal、C、C 、Java、漢語編程等或匯編語言,而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
對于 C#、VB 等高級語言而言,編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的字節碼(ByteCode)。最后運行的時候通過通用語言運行庫的轉換,編程最終可以被 CPU 直接計算的機器碼(NativeCode)。
一般編譯器可以分為以下兩類
- “本地”編譯器:編譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平臺)相同的環境下運行的目標代碼。
- 交叉編譯器:編譯器也可以生成用來在其他平臺上運行的目標代碼,交叉編譯器在生成新的硬件平臺時非常有用。
編譯器工作方法
- 首先編譯器進行語法分析,也就是要把那些字符串分離出來。
- 然后進行語義分析,就是把各個由語法分析分析出的語法單元的意義搞清楚。
- 最后生成的是目標文件,也稱為 obj 文件。
- 再經過鏈接器的鏈接就可以生成最后的 EXE 文件了。
- 有些時候需要把多個文件產生的目標文件進行鏈接,產生最后的代碼。這一過程稱為交叉鏈接。