中间语言
中介码
中介码(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中间语言在编译器的设计中,它是用作简单的目标语言
相关条目
抽象语法树
字节码
符号表
Source-to-source compiler
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值