我正在学习Forth,是为了一个我想做的个人项目。它看起来是一种在小型虚拟机上实现的非常酷和简单的语言。
词汇表的使用给我留下了深刻的印象。另一方面,我认为字典的工作方式对于一种总体上如此简单的语言来说过于复杂。我之所以这样说,是因为我读过一些关于这方面的论文,我知道其中存在很多争议。
有一些微处理器在他们的指令中实现了Forth的一些功能,我很想知道他们是如何实现字典和词汇等功能的,这样我就可以实现一个看起来像那些微处理器的虚拟机。
也就是说,字典不是一个简单的堆,也不是一个简单的线性向量,我们可以简单地对它进行索引,所以对于微处理器的微代码来说(我猜)不是一件容易的事情。当然,如果那些特殊的处理器能够像它应该的那样实现字典,而不需要任何额外的代码,我会非常惊讶的。我认为这是不可能的。
因此,对于我的项目,我正在考虑使用堆来编写解释器,并使用操作码来操作它,就像在6852中一样。和字典的代码,应与解释器和编辑器一起在Forth中编译。我认为这应该看起来更像现实。
所有这些争议都是关于什么的?在字典和词汇表的使用方面,这些特殊的处理器是如何工作的?
发布于 2010-09-08 12:13:41
The Wikipedia article on Forth包含对字典的原始实现的简短描述。另请参阅Forth的演进中的"Development and Dissemination“。最初的实现使用的是链表。但是哈希表(Map)似乎是更好的近似值。
发布于 2018-04-25 03:07:56
选择一些在你的机器上运行的小程序,然后从那里开始。查找ciforth (需要是一个m4向导...),eForth (很多变体),ff,lbForth。
如果你想一直做下去,可以看看jonesforth (适用于x86_32)或jonesforth64 (适用于x86_64,bit i386 comments)。它将解释如何/为什么很多乱七八糟的东西挂在一起。
https://stackoverflow.com/questions/3664507
复制相似问题