俺的回收站

架构分析 解释编译原理
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

面向堆栈的虚拟机与 Moving Forth 简介

Posted on 2006-12-17 16:33  Riceball LEE  阅读(1505)  评论(3编辑  收藏  举报
CLR 的实现虚拟机就是一个与Forth类似的堆栈虚拟机。

Moving Forth
原文出处http://www.zetetics.com/bj/papers/index.html
相关网站http://www.zetetics.com/camel/index.html

目的:
  如何将Forth移植至另一个CPU系统上。
概述:
  要将Forth移植至另一个CPU上,必须了解目标CPU之特性及Forth的架构。
此篇文章除概述Forth架构外,亦说明数种CPU构架下Forth之执行机制的选择。

1.Forth系统概观
  Forth是一套建造于一个虚拟硬件上之系统,其中包括有操作系统、语言、除错器等等软件。
  所以Forth规类为混合操作系统之语言。因此种特性使之特别合适于嵌入式系统中。

2.认识Forth虚拟机器
  Forth有其自己的CPU架构,除缓存器外,拥有二组堆栈,一组为程序返回堆,一组为数据堆栈。
  完整的Forth缓存器有下列六个。
  PSP:Parameter Stack(or data stack) Pointer
  TOS:Top Of Stack
  RSP:Return Stack Pointer
  IP :Interpreter Pointer(Program Counter)
  UP :User Pointer
  W  :Working register
  另有其它缓存器,moving forth原文内称为X缓存器,亦有人用A(Addressing)缓存器。
  以下描述各缓存器功能。
  PSP,TOS:为数据堆栈相关缓存器,PSP为管理数据堆栈之指针器。
    而TOS为数据堆栈顶端缓存器,主因为数据堆栈动作量大,但只有一个进出口。
    若将顶端数据留在CPU之中,有加速数据处理的作用。
  RSP:为程序呼叫之返回堆栈指针器。
  IP :执行Forth word用之地址缓存器,用以指向下次执行字为何,其运作和字典相关。
  UP :使用者管理用缓存器,为多任务管理用缓存器,指向task作用区。记录其Task相关信息。
  W  :辅助工作用缓存器,辅助字典动作或运算用。
3.Forth字典Word执行机制
  Forth字典Word执行机制有四种方式:
  Indirect Thread Code(ITC)
  Direct Thread Code(DTC)
  Subroution Thread Code(STC)
  Token Thread Code(TTC)

  ITC:为原始Forth所使用的字典方法。现已不用,多为DTC所取代。
    代码流为:各个过程的入口地址
    其结构及动作原理参照Moving Forth-Figure 1。

  STC:动作最简单,最容易理解的字典动作,直接使用一般CPU的呼叫。
可能有较快的执行速度,但加大程序代码的容量。
而且高阶字及低阶字有相同的结构,最容易实现的字典动作。
因利用CPU call之指令,所以无IP缓存器。
结构及动作原理参照Moving Forth-Figure 3。
  TTC:查表式的字典动作,有最小的执行档,适合在通信式的场合下使用。
以此字典结构的执行文件来看,则可看见一个Forth CPU的执行码。会比较像Forth原生CPU执行码。
结构及动作原理参照Moving Forth-Figure 4。

4.目标CPU架构及Forth虚拟机器缓存器之选择
因所使用的目标CPU有其缓存器限制,所以必须将六个缓存器选择使用缓存器或内存或是舍弃。
依其重要度来说UP为最低的,可以以内存来实现。因使用度较其它缓存器低。
其次为TOS,此缓存器为加速用,不使用仅速度较慢。
再其次为IP,若无法实现此缓存器,可以将Forth字典运作方式改为STC则可以解决。
W缓存器依目标CPU而定。Moving Forth原文中有列出一些CPU之比较与选择方式。

5.其它重要内容
Moving Forth文中有许多实现Forth字上的注意事项,如DOES>如何实现等等。
另外使用Assemble及Metacompiler实现Forth的优缺点亦有所提。

Moving Forth为实现Forth的重要入门文章,实现上则为Camel Forth。
可以参照各家Forth之实现方法,以了解Forth的核心运作。