Implementing DOES> in Forth, the entire reason I started this mess
a year ago
- #Forth
- #Programming
- #Compilers
- 文章讨论了Forth语言中`DOES>`的实现机制,这是一个用于修改新创建单词行为的关键字。
- `DOES>`具有三个时序阶段:编译期间(阶段1)、定义新单词时(阶段2)以及新单词执行时(阶段3)。
- 在阶段1,`DOES>`将其运行时代码编译到当前单词中,并为后续执行留下钩子。
- 在阶段2,`DOES>`会修改新创建单词的执行令牌(xt),使其包含`DOES>`之后的代码。
- 在阶段3,被修改的单词执行由`DOES>`编译的代码,将默认操作(推送主体地址)与自定义行为相结合。
- 该实现涉及通过`JSR`指令跳转到辅助例程(`forth_core_create.does_hook`),该例程为自定义代码设置执行上下文。
- 文章指出,由于现代系统对可写和可执行内存的限制,`DOES>`的实现可能面临挑战。