主要观点:作者阐述了在 Forth 中实现DOES>
的过程及相关问题,包括其时间方面的特性、与CREATE
等 Forth 单词的交互等,还提及了 JonesForth 未实现DOES>
的可能原因。
关键信息:
DOES>
是即时词,在编译时执行特殊操作,需修改新创建的单词使其不仅推送自身代码地址还能执行后续代码。CREATE
创建新单词并将其主体地址压入栈,SHAPE
通过CREATE
创建新单词并编译代码。DOES>
在不同时间点(时间 1 编译、时间 2 修改新单词、时间 3 运行创建的单词)有不同操作,如在时间 1 编译当前单词的运行时xt
等。forth_core_create.does_hook
在DOES>
运行时起到推送主体地址和设置执行代码的作用。
重要细节:- 示例中
STAR
打印星号,.ROW
根据 8 位值打印星号或空格,DO
和LOOP
是 Forth 的for
循环。 MAN
创建后的结构及在不同时间点的变化,如时间 1 时SHAPE
的结构变化,时间 2 时DOES>
对MAN
的修改等。- 提到现代系统对可写可执行内存的限制可能是 JonesForth 未实现
DOES>
的原因。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。