首页 > 知识点讲解
       解释器基础
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 编译器和解释器的基础知识 > 程序设计语言的翻译基础 > 
被考次数:1次     被考频率:低频率     总体答错率:53%     知识难度系数:     
相关知识点:15个      
        解释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的内部形式。因此,解释程序不产生源程序的目标程序,这是它和编译程序的主要区别。下图显示了以解释方式实现高级语言的三种方式。
        
        解释器类型示意图
        源程序被直接解释执行的处理方式如上图中的标记A所示。这种解释程序对源程序进行逐个字符的检查,然后执行程序语句规定的动作。
        例如,如果扫描到字符串序列:
        
        解释程序就开始搜索源程序中标号L后面紧跟冒号“:”的出现位置。这类解释程序通过反复扫描源程序来实现程序的运行,效率很低。
        解释程序也可以先将源程序转换成某种中间代码形式,然后对中间代码进行解释来实现用户程序的运行,这种翻译方式如上图中的标记B和C所示。通常,在中间代码和高级语言的语句间存在一一对应的关系。解释方式B和C的不同之处在于中间代码的级别,在方式C下,解释程序采用的中间代码更接近于机器语言。在这种实现方案中,高级语言和低级中间代码间存在着“1:n”的对应关系。PASCAL-P解释系统是这类解释程序的一个实例,它在词法分析、语法分析和语义分析的基础上,先将源程序翻译成P-代码,再由一个非常简单的解释程序来解释执行这种P-代码。这类系统具有比较好的可移植性。
        下面简要描述解释程序的基本结构。这类系统通常可以分成两部分:第一部分是分析部分,包括与编译过程相同的词法分析、语法分析和语义分析程序,经语义分析后把源程序翻译成中间代码,中间代码常采用逆波兰表示形式。第二部分是解释部分,用来对第一部分产生的中间代码进行解释执行。下面简要介绍第二部分的工作原理。
        设用数组MEM模拟计算机的内存,源程序的中间代码和解释部分的各个子程序都存放在数组MEM中。全局变量PC是一个程序计数器,它记录了当前正在执行的中间代码的位置。这种解释部分的常见结构可以由下面两部分组成。
        (1)PC:=PC+1;
        (2)执行位于opcode-table[MEM[PC]]的子程序(解释子程序执行后返回到前面)。用一个简单例子来说明其工作原理。设两个实型变量A和B进行相加的中间代码是:
        
        其中,中间代码Ipush和Iaddreal实际上都是opcode-table表的索引值(即位移),而该表的单元中存放着对应的解释子程序的起始地址,A和B都是MEM中的索引值。解释部分开始执行时,PC的值为start-1。
        
        解释部分可表示如下:
        
        其中,stackreal()表示把相应值压入栈中,而popreal()表示取得栈顶元素值并弹出栈顶元素。上面的解释部分基于栈实现了将两个数值相加并将结果存入栈中的处理。
        对于高级语言的编译和解释翻译方式,可从以下几个方面进行比较。
        (1)效率。编译比解释方式可能取得更高的效率。
        一般情况下,在解释方式下运行程序时,解释程序可能需要反复扫描源程序。例如,每一次引用变量都要进行类型检查,甚至需要重新进行存储分配,从而降低了程序的运行速度。在空间上,以解释方式运行程序需要更多的内存,因为系统不但需要为用户程序分配运行空间,而且要为解释程序及其支撑系统分配空间。
        在编译方式下,编译程序要生成源程序的目标代码并进行优化,该过程比解释方式需要更多的时间。虽然与仔细写出的机器程序相比,一般由编译程序创建的目标程序运行的时间更长,需要占用的存储空间更多,但源程序只需要被编译程序翻译一次,就可以多次运行。因此总体来讲,编译方式比解释方式可能取得更高的效率。
        (2)灵活性。由于解释程序需要反复检查源程序,这也使得解释方式能够比编译方式更灵活。当解释器直接运行源程序时,“在运行中”修改程序就成为可能,例如增加语句或者修改错误等。另外,当解释器直接在源程序上工作时,它可以对错误进行更精确地定位。
        (3)可移植性。源程序是由解释器控制来运行的,可以提前将解释器安装在不同的机器上,从而使得在新环境下无需修改源程序使之运行。而编译方式下则需要针对新机器重新生成源程序的目标代码才能运行。
        由于编译方式和解释方式各有特点,因此现在的一些编译系统既提供编译的方式,也提供解释的方式,甚至将两种方式结合在一起。例如,在Java虚拟机上发展的一种compiling-just-in-time技术,就是当一段代码第一次运行时进行编译,其后运行时就不再进行编译了。
 
本知识点历年真题:
隶属试卷 题号/题型 题干 难度系数/错误率
   2015年下半年
   嵌入式系统设计..
   上午试卷 综合知识
第20题
选择题
编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,(19)并不是每个编译器都必需的。与编译器相比,解释器(20)。

53%
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有