中间语言 编辑
中间语言,在计算机科学中,是指一种应用于抽象机器的程式语言,它设计的目的,是用来帮助我们分析计算机程序。这个术语源自于编译器,在编译器将源代码编译为目的码的过程中,会先将源代码转换为一个或多个的中间表述,以方便编译器进行最佳化,并产生出目的机器的机器语言。通常,中间语言的设计与一般的机器语言有三个不同之处:
1
相关
暂存器传递语言,又译为暂存器转换语言、寄存器转换语言,一种中间语言,使用于编译器中。与组合语言很接近。寄存器传递语言被用于描述一个架构中寄存器传输级上的数据流。 在学术论文和教科书中,暂存器传递语言被认为是一种与架构无关的组合语言。GCC的中间语言,也被称为暂存器传递语言,风格类似于LISP。GCC的前端会先将程式语言转译成RTL,之后再利用后端转化成机器码。
在编译器的设计中,静态单赋值形式是中间语言的特性,每个变数仅被赋值一次。在原始的IR中,已存在的变数可被分割成许多不同的版本,在许多教科书当中通常会将旧的变数名称加上一个下标而成为新的变数名称,以至于标明每个变数及其不同版本。在SSA,UD链是非常明确,而且每个仅包含单一元素。
在编译器的设计中,静态单赋值形式是中间语言的特性,每个变数仅被赋值一次。在原始的IR中,已存在的变数可被分割成许多不同的版本,在许多教科书当中通常会将旧的变数名称加上一个下标而成为新的变数名称,以至于标明每个变数及其不同版本。在SSA,UD链是非常明确,而且每个仅包含单一元素。
CUDA是由英伟达NVIDIA所推出的一种整合技术,是该公司对于GPGPU的正式名称。透过这个技术,使用者可利用NVIDIA的GPU进行图像处理之外的运算,亦是首次可以利用GPU作为C-编译器的开发环境。CUDA 开发套件只能将自家的CUDA C-语言,也就是执行于GPU的部分编译成PTX中间语言或是特定英伟达 GPU架构的机器码;而执行于中央处理器部分的C语言 / C++程式码仍依赖于外部的编译器,如Microsoft Windows下需要Microsoft Visual Studio;Linux下则主要依赖于GCC。
CUDA是由英伟达NVIDIA所推出的一种整合技术,是该公司对于GPGPU的正式名称。透过这个技术,使用者可利用NVIDIA的GPU进行图像处理之外的运算,亦是首次可以利用GPU作为C-编译器的开发环境。CUDA 开发套件只能将自家的CUDA C-语言,也就是执行于GPU的部分编译成PTX中间语言或是特定英伟达 GPU架构的机器码;而执行于中央处理器部分的C语言 / C++程式码仍依赖于外部的编译器,如Microsoft Windows下需要Microsoft Visual Studio;Linux下则主要依赖于GCC。
字节码通常指的是已经经过编译,但与特定机器码无关,需要直译器转译后才能成为机器码的中间语言。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。
asm.js是一个中间语言,设计目的是使采用C语言等编程语言编写的计算机软件可运行为网络应用程序,同时性能特征明显优于标准JavaScript。
在编译器的设计中,静态单赋值形式是中间语言的特性,每个变数仅被赋值一次。在原始的IR中,已存在的变数可被分割成许多不同的版本,在许多教科书当中通常会将旧的变数名称加上一个下标而成为新的变数名称,以至于标明每个变数及其不同版本。在SSA,UD链是非常明确,而且每个仅包含单一元素。
CUDA是由英伟达NVIDIA所推出的一种整合技术,是该公司对于GPGPU的正式名称。透过这个技术,使用者可利用NVIDIA的GPU进行图像处理之外的运算,亦是首次可以利用GPU作为C-编译器的开发环境。CUDA 开发套件只能将自家的CUDA C-语言,也就是执行于GPU的部分编译成PTX中间语言或是特定英伟达 GPU架构的机器码;而执行于中央处理器部分的C语言 / C++程式码仍依赖于外部的编译器,如Microsoft Windows下需要Microsoft Visual Studio;Linux下则主要依赖于GCC。
暂存器传递语言,又译为暂存器转换语言、寄存器转换语言,一种中间语言,使用于编译器中。与组合语言很接近。寄存器传递语言被用于描述一个架构中寄存器传输级上的数据流。 在学术论文和教科书中,暂存器传递语言被认为是一种与架构无关的组合语言。GCC的中间语言,也被称为暂存器传递语言,风格类似于LISP。GCC的前端会先将程式语言转译成RTL,之后再利用后端转化成机器码。