相關(guān)概念
編譯器:可以閱讀以某種語言(源語言)編寫的程序,并把該程序翻譯成一個等價的,用另一種語言編(目標語言)寫的程序.編譯器的重要任務之一是報告它在翻譯過程中發(fā)現(xiàn)的源程序的錯誤.
解釋器:它并不通過翻譯的方式生成目標程序.從用戶的角度看,解釋器直接利用用戶提供的輸入執(zhí)行源程序指定的輸入.
一個語言的編譯流程
一個源程序可以分為多個模塊,并存放于獨立的文件中.把源程序聚合一起的任務有時會被預處理器的程序多里完成.預處理器還會將宏的縮寫形式轉(zhuǎn)換為源語言的語句.
然后,將預處理的源程序作為輸入傳遞給一個編譯器.編譯器可能產(chǎn)生一個匯編語言成為它的輸出,因為匯編語言比較容易輸出和調(diào)試.接著這個匯編語言由匯編器進行處理,并生成可重定位的機器代碼.
大型程序通常被分成多個部分進行編譯,因此可重定位的機器代碼有必要和其他重定位的目標文件以及庫文件連接到一起,形成真正在機器上運行的代碼.一個文件中的代碼可以指向另外一個文件中的位置,而鏈接器能夠解決外部內(nèi)存地址的問題.最后,加載器把所有的執(zhí)行目標文件加載到內(nèi)存中執(zhí)行.
整個過程如下圖.