組譯器執行過程
計算位址
為程式中的所有指令設置其位址
記載程式中所有標載程式中所有標符號的值記(位址),以供第二階段處理之用
處理組譯器指引
指令轉為機械碼
組譯指令(將指令轉譯成機器碼,並尋找位址)
產生 BYTE、WORD 所定義的資料值
處理在第一階段尚未完成之組譯器指引
輸出目的程式和組譯器列表
各語言執行的方式
C/C++:「預先處理」(Preprocess)、「編譯」(Compile)和「組譯」(Assemble)。
預先處理即是做一些在編譯前要做的工作,之後就進行編譯。在編譯過程中,編譯器會檢查程式有沒有錯誤,而錯誤主要有兩類:「語法錯誤」(SyntaxError)和「語義錯誤」(SemanticError)。
語法錯誤就好像一個句子漏了名詞和動詞等,例如打漏了等如符號,括號數目不平衡等,那麼編譯器就不懂得「看」你的程式。
而語義錯誤就好像串錯了字,例如你用了未經宣告的變數,就算編譯器懂得看,也不懂得編譯你的程式。如果有上述錯誤,編譯器會通知你,而且停止編譯過程,這時你要修正程式內的錯誤,修改後重新開始編譯器的工作。
當沒有任何錯誤後,編譯器會把程式內每個句子轉成更低階的方式,一般來說是指「組合語言」(Assembly)方式。轉成組合語言後,組譯過程就會把每個組合語言句子轉成「機械語言」(MachineCode)方式(通常編譯器都內置了組譯器),這種方式稱為「目的碼」(ObjectCode),產生另一個檔案"file.obj"。
最後到了「連結」(Link)過程,就會把你的程式、有關的程式和程式庫所產生出來的*.obj,轉成可以在電腦上執行的方式,產生另一個檔"file.exe",這個檔案就可以執行了。

Java:運作的方式是採先編譯後直譯
一支Java程式首先必須經由Java編譯器編譯成位元碼(Byte Code),位元碼搭配Java虛擬機器(JVM)便是Java得以跨平台的原因,JVM便是直譯器(interpreter),讓這支Java程式得以在該平台上執行,如此便可不用修改原始碼而直接移到不同的電腦平台上執行。
