- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在试图找出 Forth 如何管理字典(以及一般的内存)时,我遇到了 this页。由于熟悉 C,我对指针的概念没有任何问题,而且我假设我理解的一切都是正确的。但是,页面末尾是 several exercises ,在这里我注意到了一些奇怪的事情。
练习 9.4,假设 DATE
已被定义为 VARIABLE
,询问
DATE .
和
' DATE .
和练习 9.5 使用用户变量 BASE
执行相同的操作。
根据提供的答案,这两个短语将给出相同的结果(同样使用 BASE
)。用 Win32Forth 试试这个但是,给出的结果相差 4 个字节(1 个单元格)。这是我所做的:
here . 4494668 ok
variable x ok
x . 4494672 ok
' x . 4494668 ok
创建另一个变量会得到类似的结果:
variable y ok
y . 4494680 ok
' y . 4494676 ok
因此,看起来每个变量不仅获得一个单元格(用于值),而且获得两个单元格。变量本身指向存储实际值的位置,并在执行 token 处检索内容(使用 ' x ?
)为两个变量提供 0040101F
。
对于练习 9.5,我的结果是:
base . 195F90 ok
' base . 40B418 ok
这些甚至彼此都不接近。但是,此练习的答案确实提到结果可能取决于 BASE
的定义方式。
回到普通变量,我的主要问题是:为什么每个变量保留两个单元格?
另外:
BASE
)?EDIT1: 好吧,Forth 还为每个变量存储了一个标题,使用 '
给你这个标题的地址。根据我的测试,我会得出结论,标题只使用一个单元格,它不对应于标题应包含的所有信息。其次,根据练习,检索变量的地址对于这两种情况应该给出相同的结果,这似乎与标题的存在完全矛盾。
我的直觉是,这都是非常特定于实现的。如果是这样,在 Win32Forth 中会发生什么,根据练习应该发生什么?
最佳答案
这就是使用传统内存布局在字典中定义的大致样子。请注意,实现可能与此有很大差异,有时会有很大差异。特别是,字段的顺序可能不同。
Link to previous word (one cell)
Flags (a few bits)
Name length (one byte, less a few bits)
Name string (variable)
Code field (one cell)
Parameter field (variable)
除了代码和参数字段之外的所有内容都被视为标题。代码字段通常位于参数字段之前。
用 '
勾选一个词会给你一个 XT,或执行 token 。这可以是实现所需的任何内容,但在许多情况下,它是代码字段的地址。
执行使用 CREATE
或 VARIABLE
创建的单词会为您提供参数字段的地址。
这可能就是为什么在 Win32Forth 中,两个地址相差 4 个字节,或一个单元格。我不知道为什么练习的答案应该没有区别。
假设 BASE
是一个用户变量,它可能是这样工作的:每个任务都有自己的用户区域,用户变量被分配在其中。所有用户变量都知道它们在该区域内的特定偏移量。勾选 BASE
会给你它的 XT,它对所有任务都是一样的。执行 BASE
通过将其偏移量添加到用户区域的基址来计算地址。
关于forth - 为什么 Forth 为每个变量保留两个单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45391043/
我已经尝试在我的 CSS 中添加一个元素来删除每三个 div 的 margin-right。不过,似乎只是出于某种原因影响了第 3 次和第 7 次。需要它在第 3、6、9 等日工作... CSS .s
如何使 div/input 闪烁或“脉冲”?例如,假设表单字段输入了无效值? 最佳答案 使用 CSS3 类似 on this page ,您可以将脉冲效果添加到名为 error 的类中: @-webk
我目前正在尝试构建一个简单的 wireframe来自 lattice 的情节包,但由沿 y 轴的数百个点组成。这导致绘图被线框网格淹没,您看到的只是一个黑色块。我知道我可以用 col=FALSE 完全
在知道 parent>div CSS 选择器在 IE 中无法识别后,我重新编码我的 CSS 样式,例如: div#bodyMain div#paneLeft>div{/*styles here*/}
我有两个 div,一个在另一个里面。当我将鼠标悬停 到最外面的那个时,我想改变它的颜色,没问题。但是,当我将鼠标悬停 到内部时,我只想更改它的颜色。这可能吗?换句话说,当 将鼠标悬停到内部 div 上
我需要展示这样的东西 有人可以帮忙吗?我可以实现以下输出 我正在使用以下代码:: GridView.builder( scrollDirection: Axis.vertical,
当 Bottom Sheet 像 Android 键盘一样打开时,是否有任何方法可以手动上推布局( ScrollView 或回收器 View 或整个 Activity )?或者你可以说我想以 Bott
我有以下代码,用于使用纯 HTML 和 CSS 显示翻转。当您将鼠标悬停在文本上时,它会更改左右图像。 在我测试的所有浏览器中都运行良好,Safari 4 除外。据我收集的信息,Safari 4 支持
我构建了某种 CMS,但在使用 TinyMCE 和 Bootstrap 时遇到了一些问题。 我有一个页面,其中概述了一个 div,如果用户单击该 div,他们可以从模态中选择图像。该图像被插入到一个
出于某种原因,当我设置一个过渡时,当我的鼠标悬停在一个元素上时,背景会改变颜色,它只适用于一个元素,但它们都共享同一个类?任何帮助我的 CSS .outer_ad { position:rel
好吧,这真的很愚蠢。我不知道 Android Studio 中的调试监视框架发生了什么。我有 1.5.1 的工作室。 是否有一些来自 intellij 的 secret 知识来展示它。 最佳答案 与以
我有这个标记: some code > 我正在尝试获取此布局: 注意:上一个和下一个按钮靠近#player 我正在尝试这样: .nextBtn{
网站:http://avuedesigns.com/index 首页有 6 个菜单项。我希望每件元素在您经过时都有自己的颜色。 这是当您将鼠标悬停在 div 上时将所有内容更改为白色的行 li#hom
我需要在 index.php 文件中显示它,但没有任何效果。我所有的文章都没有正确定位。我将其用作代码: 最佳答案 您可以首先检查您
我是一名优秀的程序员,十分优秀!