gpt4 book ai didi

compilation - 第四,解释还是编译?

转载 作者:行者123 更新时间:2023-12-01 07:13:12 25 4
gpt4 key购买 nike

据说 Forth 程序可以“编译”,但如果它们的单词仅在运行时进行评估,我不明白这是怎么回事。例如,有词DOES>它存储用于在运行时进行评估的单词。如果这些词包含 EVALUATEINTERPRET word 那么将有运行时需要字典。

为了支持这样的语句,这意味着整个单词列表(字典)必须嵌入到程序中,本质上是解释程序(而不是编译程序)所做的。

这似乎会阻止您使用 Forth 编译小程序,因为整个字典都必须嵌入到程序中,即使您只使用了字典中的一小部分单词。

这是正确的,还是有什么方法可以在不嵌入字典的情况下编译 Forth 程序? (也许根本不使用运行时词??)

最佳答案

Forth 程序可以使用或不使用字头进行编译。标题包括单词名称(称为“ namespace ”)。

在您描述的场景中,程序可能包含运行时评估调用,例如 EVALUATE ,将需要标题。

  • 字典可以分为三个逻辑上不同的部分: namespace 、代码空间和数据空间。程序执行需要代码和数据,名称通常不需要。
  • 一个普通的 Forth 程序通常不会做任何运行时求值。因此,在大多数情况下,编译程序中不需要这些名称。
  • DOES>后面的代码已编译,因此不会在运行时对其进行评估。它在运行时执行。
  • 即使包含名称,它们通常也不会对程序大小增加太多。
  • 许多 Forth 确实有办法从程序中省略名称。有些具有删除单词标题(名称)的开关。其他有交叉编译器,在编译时将名称保留在主机系统中,但生成没有名称的目标代码。
  • 关于compilation - 第四,解释还是编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458202/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com