fbpx
维基百科

中間語言

中間語言(英語:Intermediate language),在計算機科學中,是指一種應用於抽象機器(abstract machine)的程式語言,它設計的目的,是用來幫助我們分析计算机程序。這個術語源自於編譯器,在編譯器將原始碼編譯為目的碼的過程中,會先將原始碼轉換為一個或多個的中間表述,以方便編譯器進行最佳化,並產生出目的機器的机器语言。通常,中間語言的設計與一般的机器语言有三個不同之處:

  • 每個指令代表僅有一個基本的操作。舉例來說,在微处理器中出現的shift-add定址模式在中間語言不會出現。
  • 指令集內可能不會包含控制流程的資訊。
  • 暫存器可用的數量可能會很大,甚至沒有限制。

最常見的中間語言表述形式,是三位址碼(Three address code)。

這個術語也同時用來代稱一些作為中間層的語言,有些高级语言不會輸出為機器語言,它們僅會輸出這種中間語言,而這些中間語言則會像一般語言一樣,提交給編譯器,編譯為機器語言。這通常被用於讓最佳化的過程更簡單,也用於增進可移植性的能力,改進移植的方式則是利用中間語言的編譯器,可以編譯出許多中央处理器操作系统可使用的機器碼,例如C语言。中間語言的複雜度,通常介於高階語言及低级语言之間,例如汇编语言

中介碼 编辑

中介碼(IR,intermediate representation)是一種数据结构,可將輸入的資料建構為一個计算机程序,也可以將一部份或是所有輸出的程式反推回輸入資料。這意味著中介碼將會保留一些輸入資料的資訊,同時擁有更進一步註釋或是快速查詢的功能。

舉一個典型的例子,它是現代許多編譯器所擁有的功能,它可將一段程式轉換成一個中間層的Graph資料結構,Graph可進行数据流分析,而且可在建立實際運行的CPU指令列表之前進行重組(re-arrangement),這種中間層的使用方式,允許像是LLVM的編譯系統可以同時擁有許多不同的前端語言編譯器,而且可以產生許多不同架構系統的機器碼。

語言 编辑

C语言雖然並沒有明確設計為中間語言,但它天生就是汇编语言的抽象形態,它同時作為类Unix系统及其他作業系統中的系統程式語言(System programming language),這令它成為最熱門的中間語言,使用它的包含Eiffel、Sather、Esterel、一些Lisp的方言(Lush, Gambit)、HaskellGlasgow Haskell Compiler)、Squeak的Smalltalk子集Slang、Cython、Seed7、Vala等等。C的變形已經被用作可攜版的汇编语言同時包含C的功能,包含C--及C中間語言(C Intermediate Language)。

微軟的通用中间语言,在動態或是靜態編譯為機器語言之前,可用作.NET框架底下所有編譯器共享的中間語言。

GCC使用不同的中間語言來達到簡化行動性及跨平台,包含:

多數的中間語言用作支援靜態類型的語言,Parrot intermediate representation則是設計用作支援動態類型的語言,最初有Perl及Python。

ILOC中間語言[1]在編譯器的設計中,它是用作簡單的目標語言[2]

相關條目 编辑

參考文件 编辑

  1. ^ "An ILOC Simulator" (页面存档备份,存于互联网档案馆) by W. A. Barrett 2007, paraphrasing Keith Cooper and Linda Torczon, "Engineering a Compiler", Morgan Kaufmann, 2004. ISBN 1-55860-698-X.
  2. ^ "CISC 471 Compiler Design" (页面存档备份,存于互联网档案馆) by Uli Kremer

外部連結 编辑

中間語言, 英語, intermediate, language, 在計算機科學中, 是指一種應用於抽象機器, abstract, machine, 的程式語言, 它設計的目的, 是用來幫助我們分析计算机程序, 這個術語源自於編譯器, 在編譯器將原始碼編譯為目的碼的過程中, 會先將原始碼轉換為一個或多個的中間表述, 以方便編譯器進行最佳化, 並產生出目的機器的机器语言, 通常, 的設計與一般的机器语言有三個不同之處, 每個指令代表僅有一個基本的操作, 舉例來說, 在微处理器中出現的shift, add定址模式在不會. 中間語言 英語 Intermediate language 在計算機科學中 是指一種應用於抽象機器 abstract machine 的程式語言 它設計的目的 是用來幫助我們分析计算机程序 這個術語源自於編譯器 在編譯器將原始碼編譯為目的碼的過程中 會先將原始碼轉換為一個或多個的中間表述 以方便編譯器進行最佳化 並產生出目的機器的机器语言 通常 中間語言的設計與一般的机器语言有三個不同之處 每個指令代表僅有一個基本的操作 舉例來說 在微处理器中出現的shift add定址模式在中間語言不會出現 指令集內可能不會包含控制流程的資訊 暫存器可用的數量可能會很大 甚至沒有限制 最常見的中間語言表述形式 是三位址碼 Three address code 這個術語也同時用來代稱一些作為中間層的語言 有些高级语言不會輸出為機器語言 它們僅會輸出這種中間語言 而這些中間語言則會像一般語言一樣 提交給編譯器 編譯為機器語言 這通常被用於讓最佳化的過程更簡單 也用於增進可移植性的能力 改進移植的方式則是利用中間語言的編譯器 可以編譯出許多中央处理器及操作系统可使用的機器碼 例如C语言 中間語言的複雜度 通常介於高階語言及低级语言之間 例如汇编语言 目录 1 中介碼 2 語言 3 相關條目 4 參考文件 5 外部連結中介碼 编辑中介碼 IR intermediate representation 是一種数据结构 可將輸入的資料建構為一個计算机程序 也可以將一部份或是所有輸出的程式反推回輸入資料 這意味著中介碼將會保留一些輸入資料的資訊 同時擁有更進一步註釋或是快速查詢的功能 舉一個典型的例子 它是現代許多編譯器所擁有的功能 它可將一段程式轉換成一個中間層的Graph資料結構 Graph可進行数据流分析 而且可在建立實際運行的CPU指令列表之前進行重組 re arrangement 這種中間層的使用方式 允許像是LLVM的編譯系統可以同時擁有許多不同的前端語言編譯器 而且可以產生許多不同架構系統的機器碼 語言 编辑C语言雖然並沒有明確設計為中間語言 但它天生就是汇编语言的抽象形態 它同時作為类Unix系统及其他作業系統中的系統程式語言 System programming language 這令它成為最熱門的中間語言 使用它的包含Eiffel Sather Esterel 一些Lisp的方言 Lush Gambit Haskell Glasgow Haskell Compiler Squeak的Smalltalk子集Slang Cython Seed7 Vala等等 C的變形已經被用作可攜版的汇编语言同時包含C的功能 包含C 及C中間語言 C Intermediate Language 微軟的通用中间语言 在動態或是靜態編譯為機器語言之前 可用作 NET框架底下所有編譯器共享的中間語言 GCC使用不同的中間語言來達到簡化行動性及跨平台 包含 較有歷史的暫存器傳遞語言 RTL Register Transfer Language 使用語法樹 tree language 的GENERIC 静态单赋值形式 SSA 為基礎的GIMPLE 多數的中間語言用作支援靜態類型的語言 Parrot intermediate representation則是設計用作支援動態類型的語言 最初有Perl及Python ILOC中間語言 1 在編譯器的設計中 它是用作簡單的目標語言 2 相關條目 编辑抽象語法樹 字节码 符号表 Source to source compiler參考文件 编辑 An ILOC Simulator 页面存档备份 存于互联网档案馆 by W A Barrett 2007 paraphrasing Keith Cooper and Linda Torczon Engineering a Compiler Morgan Kaufmann 2004 ISBN 1 55860 698 X CISC 471 Compiler Design 页面存档备份 存于互联网档案馆 by Uli Kremer外部連結 编辑The Stanford SUIF Group 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 中間語言 amp oldid 69433502, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。