簡介
每個三地址碼指令,都可以被分解為四個
元組(4-tuple):(運算符,運算對象1,運算對象2,結果)。因為每個陳述都包含了三個變數,所以它被稱為三地址碼。
中間語言
中間語言(英語:Intermediate language),在計算機科學中,是指一種套用於
抽象機器(abstract machine)的程式語言,它設計的目的,是用來幫助我們分析
電腦程式。這個術語源自於
編譯器,在編譯器將
原始碼編譯為
目的碼的過程中,會先將原始碼轉換為一個或多個的中間表述,以方便編譯器進行最佳化,並產生出目的機器的
機器語言。通常,中間語言的設計與一般的
機器語言有三個不同之處:
每個指令代表僅有一個基本的操作。舉例來說,在
微處理器中出現的
shift-add定址模式在中間語言不會出現。
指令集內可能不會包含控制流程的資訊。
暫存器可用的數量可能會很大,甚至沒有限制。
最常見的中間語言表述形式,是
三位址碼(Three address code)。
這個術語也同時用來代稱一些作為中間層的語言,有些
高級語言不會輸出為機器語言,它們僅會輸出這種中間語言,而這些中間語言則會像一般語言一樣,提交給編譯器,編譯為機器語言。這通常被用於讓最佳化的過程更簡單,也用於增進
可移植性的能力,改進移植的方式則是利用中間語言的編譯器,可以編譯出許多
中央處理器及
作業系統可使用的機器碼,例如
C語言。中間語言的複雜度,通常介於高階語言及低級語言之間,例如
彙編語言。
編譯器
編譯器(compiler),是一種
電腦程式,它會將用某種程式語言寫成的
原始碼(原始語言),轉換成另一種程式語言(目標語言)。
它主要的目的是將便於人編寫、閱讀、維護的高級計算機語言所寫作的
原始碼程式,翻譯為計算機能解讀、運行的低階機器語言的程式,也就是
執行檔。編譯器將原始程式(source program)作為輸入,翻譯產生使用目標語言(target language)的等價程式。
原始碼一般為高級語言(High-level language),如Pascal、C、C++、C# 、Java等,而目標語言則是彙編語言或目標機器的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
一個現代編譯器的主要工作流程如下:
原始碼(source code)→
預處理器(preprocessor)→
編譯器(compiler)→
彙編程式(assembler)→
目標代碼(object code)→
連結器(Linker)→
執行檔(executables), 最後打包好的檔案就可以給計算機去判讀運行了。