什麼是組譯器
下面這一句話裡的名詞「編譯」、「直譯」是什麼意思?
『Java需先經過「編譯」的程序,將程式碼轉成與平台無關的機器碼,
即為位元碼,再以「直譯」的方式執行。』
組譯:將組合語言轉成機械語言稱為組譯 (Assembling) ,
組合語言(assembly)是一種非常接近機器碼的語言。所以將組合語言轉成機器碼的工具稱為組譯器(assembler),反過來將機器碼轉成組合語言的工具稱為反組譯器(dissembler)。
高階語言的執行方式有編譯式與直譯式兩種
編譯:編譯式的語言是將原始程式碼透過編譯器 (Compiler) 轉成機械碼,再直接執行機械碼。主要的優點是速度快,並可一次找出程式中不合文法的部份。編譯式的語言如 C, FORTRAN, COBOL 等均是。
直譯:直譯式的語言是利用直譯器 (Interpreter) 對原始程式碼一邊讀解,一邊執行。主要的優點是對於初學者較易於使用。直譯式的語言如 Basic, dBASE III 及其他 Script Language 等。
Java程式運作的方式是採先編譯後直譯
:一支Java程式首先必須經由Java編譯器編譯成位元碼(Byte Code),位元碼搭配Java虛擬機器(JVM)便是Java得以跨平台的原因,JVM便是直譯器(interpreter),讓這支Java程式得以在該平台上執行,如此便可不用修改原始碼而直接移到不同的電腦平台上執行
組合語言(英語:assembly language)[註 1][1]是一種用於電子電腦、微處理器、微控制器,或其他可編程器件的低階語言。在不同的裝置中,組合語言對應著不同的機器語言指令集。一種組合語言專用於某種電腦系統結構,而不像許多高階語言,可以在不同系統平台之間移植。
使用組合語言編寫的原始碼,然後通過相應的組譯程式將它們轉換成可執行的機器碼。這一過程被稱為組譯過程。
組合語言使用助憶碼(Mnemonics)來代替和表示特定低階機器語言的操作。特定的組譯目標指令集可能會包括特定的運算元。許多組譯程式可以識別代表位址和常量的標籤(Label)和符號(Symbols),這樣就可以用字元來代表運算元而無需採取寫死的方式。普遍地說,每一種特定的組合語言和其特定的機器語言指令集是一一對應的。
許多組譯程式為程式開發、組譯控制、輔助偵錯提供了額外的支援機制。有的組合語言編寫工具經常會提供巨集,它們也被稱為巨組譯器。
現在組合語言已不像其他大多數的程式設計語言一樣被廣泛用於程式設計,在今天的實際應用中,它通常被應用在底層硬體操作和高要求的程式優化的場合。驅動程式、嵌入式操作系統和實時運行程式都會需要組合語言。