11

我正在研究Forth以完成我心中的一个个人项目。它看起来是一种在小型虚拟机中实现的非常酷且简单的语言。

我对在上面使用词汇的可能性印象特别深刻。另一方面,我认为字典的工作方式对于整体如此简单的语言来说过于复杂。我这么说是因为我读过一些关于它的论文,我知道存在很多争议。

有一些微处理器在它们的指令中实现了 Forth 的一些特性,我很想知道它们是如何实现字典和它们上的词汇等特性的,所以我可以实现一个看起来像那些微处理器的虚拟机。

也就是说,字典不是一个简单长大的堆,也不是一个简单的可以简单索引的线性向量,所以对于微处理器的微码来说,这不是一件容易的事(我猜)。当然,如果那些特殊的处理器能够在没有任何额外代码的情况下实现字典应有的样子,我会印象深刻。我认为这是不可能的。

因此,对于我的项目,我正在考虑使用堆对解释器进行编码,并使用操作码来操作它,就像在 6852 中一样。字典的代码应与 Forth 中的解释器和编辑器一起编译. 我认为这应该看起来更像现实。

所有这些争论是关于什么的?这些特殊处理器是如何工作的,与字典和词汇的使用有关?

4

2 回答 2

5

Forth 上的 Wikipedia 文章包含对 Dictionary 最初实现的简短描述。另见《 Forth 的演变》中的“发展与传播”。最初的实现使用了一个链表。但是 hashtable(map) 似乎是一个更好的近似值。

于 2010-09-08T04:13:40.910 回答
0

选择在你的机器上运行的小东西,然后从那里开始。寻找 ciforth(需要是一个 m4 向导,不过......)、eForth(很多变种)、ff、lbForth。

如果您想一直到铁杆,请查看 jonesforth(针对 x86_32)或 jonesforth64(针对 x86_64,位 i386 评论)。它将解释大部分混乱是如何/为什么挂在一起的。

于 2018-04-24T19:07:55.863 回答