5.4显式控制的解释器

5.4显式控制的解释器
在5.1部分中,我们已经看到如何把简单的SCHEME程序转换成寄存器机器的描述。
我们将在更复杂的程序中执行这种转换,4.1.1~4.1.4部分的元循环解释器展示出
用程序eval和apply如何描述出SCHEME解释器的行为。我们在这部分中开发的显式
控制的解释器展示出用寄存器和栈上的操作来描述在解释执行的过程中,
程序调用和实际参数传递的机制是如何被使用的。此外,显示控制的解释器能够
作为一个SCHEME解释器的实现,在一种与传统的计算机的本身的机器语言很类似的
语言写成。解释器能用5.2部分中的寄存器机器的模拟器上执行。还有,它能作为构建
SCHEME语言的解释器的机器语言的实现的起点,或者是执行SCHEME表达式的特定
目的的机器。图5.16 显示这样的一个硬件实现:一个硅芯片作为一个SCHEME的解释器。
芯片的设计者为了制造与本部分中描述的解释器相类似的寄存器机器,工作开始于
数据路径和控制器的规范,并且使用设计自动化的编程工具来组装集成电路的布局图。

*寄存器与操作
为了设计一个显式控制的解释器,我们必须指定在我们的寄存器机器中使用到的操作.
我们描述了元循环的解释器,使用抽象语法,使用程序例如quoted? 和 make-procedure
为了实现寄存器机器,我们能扩展这些程序到元素级的列表结构的内存操作的序列,在
我们的寄存器机器中实现这些操作。然而,关注基本结构的细节部分,这会让我们的
解释器非常的长。为了分类表示形式,我们将包括在4.1.2部分中给出的语法程序作为寄存器机器
的原生操作。还包括表示环境的程序和在4.1.3部分,4.1.4部分中给出的其它的运行时数据。
为了完全地指定一个解释器,这个解释器能被在一种低级语言中编程或者在硬件中实现,
我们能替换这些操作为更元素级的操作,使用我们在5。3部分中,已经描述的列表结构的实现。

我们的scheme解释器的寄存器机器包括一个栈和七个寄存器,它们分别是exp,env,val,continue,
proc,agrl,unev.译成汉语分别是表达式,环境,值,继续,程序,参数,未解释。 Exp寄存器被用来保存要被解释的表达式,  env寄存器保存要被执行的解释过程中的环境。在一个解释中结尾, val寄存器被用来保存在特定的环境中,解释表达式所得到的值。 continue寄存器用来实现递归,正如在5。1。4部分中的解释。(解释器需要递归地调用本身,因为解释一个表达式需要解释它的子表达式。) proc,argl unev被用在组合表达式的解释中。

我们没有提供一个数据路径图来显示解释器中的寄存器和操作是如何被连接的,也没有提供机器
操作的完整列表。在解释器的控制器中这些都是隐式的,它们能被显示为细节部分。

猜你喜欢

转载自blog.csdn.net/gggwfn1982/article/details/83447731