![]() |
1
23
This thread 涵盖了你的确切问题。这是一个 soup-to-nuts implementation 有完整的文件。
68K
我上大学的时候。我定义了运行时环境和字典格式,然后编写了一些C代码,引导加载默认字典的Macintosh应用程序,填充了一些I/O向量并使代码运行。然后我拿了利奥·布罗迪的书
Starting Forth
并开始用68K汇编语言实现基本字典。我从算术/逻辑单词开始,然后是控制结构,然后是单词定义/操作单词。我的理解是,至少你需要@、!、+、-、*和/。其余的可以根据这些来实现,但这就像试图基于这些来编写一个完整的图形库一样
我喜欢这个过程,因为有一些非常有趣的谜题,比如
|
![]() |
2
13
很久以前,我有一本叫做“线程解释语言”的书,我想是按字节出版的,它讨论了如何在Z80汇编中实现一种类似Forth的语言(我认为他们从来没有调用过Forth)。
|
![]() |
3
8
在comp.lang.forth上的这篇文章列出了一些“最短的forth”。 http://groups.google.com/group/comp.lang.forth/msg/10872cb68edcb526 paper 关于做一个“最小的Forth”(虽然是瑞典语)。如果我没记错的话,他想得到一组可以在硅中构建的最少的操作符。 |
![]() |
4
4
我仍然不相信这个问题是正确的。例如,底座的说明可以减少;毕竟
|
![]() |
5
4
你可能还想看看汉斯·贝泽默的 4tH compiler |
![]() |
6
2
|
![]() |
7
1
与您所说的相反,通常情况下,DROP SWAP等被视为基本操作。原因是,如果您像您建议的那样使用内存操作来实现它们,那么整个系统将变得更复杂,而不是更少复杂。 此外,Forther通常会在高级中重新编码汇编词,在汇编中重新编码高级词。我是ciforth和yourforth的作者。 可以定义<=正如我在ciforth所做的那样“不是”。但在yourforth中,我决定<=&燃气轮机>=与此类似,外观统一的小型汇编程序实际上更简单。这是一种判断,是品味问题,当然不是原则问题。 在上下文中,我将这个问题解释为:“原始操作的数量以合理的速度达到合理的强大Forth的合理大小是多少?” 显然,您对以巨大的开销为代价摆脱一个汇编词的巧妙技巧不感兴趣,正如在讨论这个主题的一些线程中所发现的那样。 现在你可以看看一些小的福斯,比如琼斯福斯,你的福斯福斯,得出的结论是,大多数福斯都是50到100个原语。 这些Forth是在汇编程序中定义的。如果您想用c、python或Java定义原语,情况也会有所不同。现在,对于上述词典搜索,您可以在c和Forth之间进行选择。与语言设计无关的考虑因素开始发挥作用。你可能是一个多产的c程序员,或者你可能坚持用Forth编码,因为这是一个学习项目。 |
![]() |
8
1
|
|
saleem · java虚拟机中的ioper命令是ub-idiv顺序 9 年前 |
|
user3452305 · 带字符串的堆叠机 11 年前 |
|
user3318845 · 字节码如何更快?[已关闭] 11 年前 |
|
Robin Hoksbergen · 解释器基于堆栈的VM的替代方案 11 年前 |