标签: win32forth

为什么 Forth 为每个变量保留两个单元格?

在试图找出 Forth 如何管理字典(以及一般内存)时,我遇到了这个页面。熟悉 C 语言后,我对指针的概念没有任何问题,并且我认为我对所有内容的理解都是正确的。然而,在页面的最后有几个练习,在这里我注意到一些奇怪的事情。

练习9.4,假设DATE已被定义为a VARIABLE,询问之间的区别是什么

DATE .
Run Code Online (Sandbox Code Playgroud)

' DATE .
Run Code Online (Sandbox Code Playgroud)

练习9.5使用用户变量执行相同的操作BASE

根据提供的答案,两个短语将给出相同的结果(也带有BASE)。然而,使用Win32Forth尝试此操作,得到的结果相差 4 个字节(1 个单元格)。这是我所做的:

here . 4494668  ok
variable x  ok
x . 4494672  ok
' x . 4494668  ok
Run Code Online (Sandbox Code Playgroud)

创建另一个变量会产生类似的结果:

variable y  ok
y . 4494680  ok
' y . 4494676  ok
Run Code Online (Sandbox Code Playgroud)

因此,看起来每个变量不仅仅是一个单元格(用于值),而是两个单元格。变量本身指向实际值的存储位置,并检索执行令牌处的内容(使用' x ?)给出0040101F这两个变量。

对于练习 9.5,我的结果是:

base . 195F90  ok
' base …
Run Code Online (Sandbox Code Playgroud)

forth win32forth

3
推荐指数
1
解决办法
463
查看次数

标签 统计

forth ×1

win32forth ×1