当前位置:   article > 正文

编译原理:解释程序_高级语言的编译过程和解释过程图

高级语言的编译过程和解释过程图

编译程序是一个语言处理程序,它把一个高级语言程序翻译成某个机器的汇编语言程序或二进制代码程序,这个二进制代码程序在机器上运行以生成结果。因此通过编译程序使得程序员可以先准备好一个在该机器上运行的程序。然后这个程序便会以机器的速度运行。但是在不把整个程序全部翻译完成后,这个程序是不能开始运行、也不能产生任何结果的。

编译和运行是两个独立分开的阶段。但在一个交互环境中,并不需要将这两个阶段分隔开。这里介绍另一种语言处理程序,叫 解释程序。它不需要在运行前先把源程序翻译成目标代码,也可以实现在某台机器上运行程序并生成结果。

解释程序接受某个语言的程序并立即运行这个源程序。它的工作模式是一个个的获取、分析并执行源程序语句,一旦第一个语句分析结束,源程序便开始运行并且产生结果,它特别适合程序员以交互方式工作的情况,即希望在获取下一个语句之前了解每个语句的执行结果,允许执行时修改程序。

著名的解释程序有BASIC语言解释程序、LISP语言解释程序、UNIX命令语言(shell)解释程序、数据库查询语言SQL解释程序以及Java语言环境中的BYTECODE解释程序。

下面分别用两幅图来展示解释程序的功能和解释程序跟编译程序的不同工作模式:
这里写图片描述
这里写图片描述

解释程序的输入包括源程序和源程序的初始数据,它不生成目标代码,直接输出结果。编译程序和解释程序的存储组织也有很大不同。经由编译程序处理时,在源程序被编译的阶段,存储区中要为源程序和目标代码开辟空间,要存放编译用的各种表格,如符号表。在目标代码运行阶段,存储区中主要是目标代码和数据,编译所用的任何信息都不再需要了。

解释程序一般是把源程序一个语句一个语句的进行语法分析,转换为一种内部表示形式,存放在源程序区。例如,BASIC解释程序将LET 和 GOTO这样的关键字表示为一个字节的操作码,标识符用其在符号表的入口位置表示。因为解释程序允许在执行用户程序时修改用户程序,这就要求在解释程序工作的整个过程中,源程序、符号表等内容始终存放在存储区域中,并且存放格式要设计得易于使用和修改。

程序的解释是非常慢的,有时一个高级语言源程序的解释会比运行等价的机器代码程序慢100倍。因此当程序的运行速度非常重要时,是不能采用解释方式的。另外解释程序的空间开销也是比较大的。

编译程序和解释程序是两类重要的高级语言处理程序。有些语言,比如BASIC、LISP和Pascal等,既有编译程序,也有解释程序。Java语言的处理环境既有编译程序,也有解释程序。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/480980
推荐阅读
相关标签
  

闽ICP备14008679号