编译原理

来源:互联网 发布:杰科网络电视机顶盒t2 编辑:程序博客网 时间:2024/04/29 11:21

关于语言处理器,编译器和解释器。

编译器,简单地说,一个编译器就是一个程序,它可以阅读某一种语言(源语言)编写的程序,并把该程序翻译成一个等价的、用另一种语言编写的程序,即将源程序经过编译器编译成为一个目标程序的软件系统,其重要任务之一就是报告它在翻译过程中发现的源程序中的错误。是在各种指令级之间的转换。

解释器是另一常见的语言处理器,它并不通过翻译生成目标程序。从用户角度来说,解释器直接利用用户的输入执行 源程序中的操作。

编译器生成目标代码后执行不在需要编译器,可以直接在支持目标代码的平台上执行,而解释器需要一条一条的解释执行源语言;

在功能上,两者之间的确不同,但从流程和结构上看,二者有着相似之处。

再读入源语言以后,解释器与编译器都要进行词法分析、语法分析、语义分析;在此之后,解释器选择直接执行语句,二编译器则是将语义存储成某一种中间语言之后通过不同的后端翻译成不机器语言(可执行程序)。

如图所示:

点击在新窗口中浏览此图片

源代码被编译成机器码,在不同的CPU上运行。

下图为解释器:


点击在新窗口中浏览此图片



解释器很方便,在语义分析后之间执行语句,不用再进行生成目标程序,即“一边编译,一边运行”,虽然比较准确,但是开销较大;

所以产生了预编译语言(java,c#)

java语言处理器结合了编译与翻译过程,一个java源程序首先被编译成字节码的中间形式,然后由虚拟机对得到的字节码加以解释。


点击在新窗口中浏览此图片

原创粉丝点击