Gforth中2constant内部实现解析及移植技术问询
理解Gforth中
2Constant的实现并移植 核心部分拆解
你看到的140549207084808是Gforth内部生成的底层代码指针地址,本质是指向(does>2)这个内置逻辑的入口,属于Gforth的内部实现细节,对移植没有参考价值,你只需要关注(does>2)的实际作用。
2Constant的本质逻辑
2Constant是用于定义双精度数值常量的单词,核心逻辑完全可以用标准Forth核心单词实现,不需要依赖特定系统的内部标识:
- 用
Create创建一个新的字典单词 - 用
2,将栈顶的双精度数值写入该单词的字典存储区 - 定义该单词被调用时的行为:把存储的双精度数值重新推回栈顶
可移植的2Constant实现
直接用标准Forth语法编写,适配所有符合标准的Forth系统:
: 2CONSTANT ( d -- ) CREATE 2, DOES> ( -- d ) 2@ ;
代码说明
CREATE 2,:创建新字典条目,同时把当前栈上的双精度数(d)存入条目对应的存储区域DOES> 2@:指定调用这个新常量单词时,从字典存储区读取双精度数并推送至栈顶
测试验证
定义后可以用以下代码验证功能:
123456789012345 2CONSTANT BIG-NUM BIG-NUM .s \ 执行后栈应显示 <123456789012345>
内容的提问来源于stack exchange,提问作者floppy_molly
相关产品推荐
相关产品推荐

