2
有没有办法改变HERE
指向什么或者其他方式来确保我编译的下一个定义最终会在某个特定位置?或者,我可以将定义复制到别的地方吗?理想情况下,我希望在ANS Forth中有一个解决方案,但Gforth特有的东西足够好。如何控制编译新的Forth单词的位置?
有没有办法改变HERE
指向什么或者其他方式来确保我编译的下一个定义最终会在某个特定位置?或者,我可以将定义复制到别的地方吗?理想情况下,我希望在ANS Forth中有一个解决方案,但Gforth特有的东西足够好。如何控制编译新的Forth单词的位置?
您可以使用ALLOT移动数据空间指针在两个方向:
: here! (a --) here - allot ;
至于gforth,这个简单的版本应该工作:
: here! dp ! ;
话虽如此,HERE不一定要编译新单词的地方。这里指向数据空间,而定义则写入命名空间和代码空间。然而,在像Gforth这样的传统设计中,三者是一个连续的区域。见DPANS94 3.3。
dp或多或少是我正在寻找的。我应该如何去寻找这样的事情? – 2014-09-11 01:19:10
阅读Forth源代码(实现和应用程序),Forth杂志(存档),互联网讨论(comp.lang.forth)的大量内容。 – 2014-09-11 05:53:54
所以没有gforth专用词汇的词汇表? – 2014-09-14 18:30:00