解释器风格
一、解释器
解释器是一个用来执行其余程序的程序。针对不一样的硬件平台实现一个虚拟机。将高层次的程序翻译为低抽象层次的所能理解的指令,以取消在程序语言与硬件之间存在的语言差别。
解释器是一般用来在程序语言定义的计算和有硬件操做肯定的计算之间创建对应和联系。完成基本的信息识别和转换,甚至能够从词法到句法,到语法复杂的识别和处理。
解释器运行程序的方法有:
1.直接运行高级编程语言 (如 Shell 自带的解释器)
2.转换高级编程语言码到一些有效率的字节码 (Bytecode),并运行这些字节码
3.以解释器包含的编译器对高级语言编译,并指示
处理器运行编译后的程序 (例如:
JIT)
二、解释器风格
基本构件:
解释器引擎
存储区(被解释的源代码,解释器引擎当前内部控制状态的表示:在某个时刻须要执行那些指令,程序当前执行状态的表示。)
链接器(对数据区的连接访问)
三、解释器和编译器
程序语言环境分为编译和解释两大类。编程
编译器:编译器不会执行输入的源程序代码,而是将其翻译为另外一种语言,一般是可执行的机器码或目标码,并输出到文件中以便随后连接为可执行文件并加以执行编程语言
解释器:在解释器中,程序源代码被解释器直接加以执行。spa
语言环境分为编译和解释两大类。
编译器不会执行输出的源程序代码,而是将其翻译成为另外一种语言,一般是可执行的机器码或目标码,并输出到文件中以便连接为可执行的文件并加以执行。解释器中,源程序代码被解释器直接加以执行。
使用解释器来运行程序会比直接运行编译过的机器码来得慢,可是相对的这个直译的行为会比编译再运行来得快。这在程序开发的雏型化阶段和只是撰写试验性的代码时尤为来得重要,由于这个“编辑-直译-除错”的循环一般比“编辑-编译-运行-除错”的循环来得省时许多。
在解释器上运行程序比直接运行编译过的代码来得慢,是由于解释器每次都必须去分析并转译它所运行到的程序行,而编译过的程序就只是直接运行。这个在运行时的分析被称为"直译式的成本"。在解释器中,变量的访问也是比较慢的,由于每次要访问变量的时候它都必须找出该变量实际存储的位置,而不像编译过的程序在编译的时候就决定好了变量的位置了。