寄存器传递语言(英语:register transfer language,缩写为 RTL),又译为暂存器转换语言、寄存器转换语言,一种中间语言,使用于编译器中。
简介与汇编语言很接近。寄存器传递语言被用于描述一个架构中寄存器传输级上的数据流。 在学术论文和教科书中,寄存器传递语言被认为是一种与架构无关的汇编语言。GCC的中间语言,也被称为寄存器传递语言(RTL),风格类似于LISP。GCC的前端(frontend)会先将编程语言转译成RTL,之后再利用后端(backend)转化成机器代码。1
历史1980年,寄存器传递语言首次被提出。1
GCCGCC使用的寄存器传递语言,采用S-表达式,与LISP类似:
(set (reg:SI 140) (plus:SI (reg:SI 138) (reg:SI 139)))中间语言中间语言(英语:Intermediate language),在计算机科学中,是指一种应用于抽象机器(abstract machine)的编程语言,它设计的目的,是用来帮助我们分析计算机程序。这个术语源自于编译器,在编译器将源代码编译为目的码的过程中,会先将源代码转换为一个或多个的中间表述,以方便编译器进行最佳化,并产生出目的机器的机器语言。通常,中间语言的设计与一般的机器语言有三个不同之处:
每个指令代表仅有一个基本的操作。举例来说,在微处理器中出现的shift-add定址模式在中间语言不会出现。
指令集内可能不会包含控制流程的资讯。
暂存器可用的数量可能会很大,甚至没有限制。
最常见的中间语言表述形式,是三位址码(Three address code)。
这个术语也同时用来代称一些作为中间层的语言,有些高级语言不会输出为机器语言,它们仅会输出这种中间语言,而这些中间语言则会像一般语言一样,提交给编译器,编译为机器语言。这通常被用于让最佳化的过程更简单,也用于增进可移植性的能力,改进移植的方式则是利用中间语言的编译器,可以编译出许多中央处理器及操作系统可使用的机器码,例如C语言。中间语言的复杂度,通常介于高阶语言及低级语言之间,例如汇编语言。1
本词条内容贡献者为:
李航 - 副教授 - 西南大学