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的核心运作。
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的核心运作。