问题标签 [forth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
352 浏览

memory-management - 释放先前分配给变量的内存(使用 create)

我正在阅读有关内存分配/释放的Gforth手册,这是我无法理解的。假设我分配了一块内存来保存四个整数,如下所示:

然后,也许我分配了更多内存,也许也释放了一些内存,现在我想 deallocate foo。我怎么做?执行foo freefoo 4 cells free导致错误。

0 投票
2 回答
100 浏览

string - Copy statically allocated string into dynamically allocated one

I was following an example, trying to explain to myself what it does:

It all made sense, until the last instruction... where did I go wrong?

EDIT:

I've added some tracing:

0 投票
1 回答
711 浏览

string-formatting - 将文字空格字符添加到图中的数字输出

经过大约几个小时的反复试验,我不知道该怎么做......这是我正在处理的代码:

顺便说一句......没有更简单的方法来打印输出,类似的东西printf会很棒。另一种可能性是将空格字符指定为一种字符串的第一个字符s" "

编辑:

我发现我可以做到:s\" \040 test"在 Gforth 中(尽管手册上说它不是标准的)。这s\" \x20 test"可能是标准的,但我不太明白句子中表示它是否标准的部分在哪里相关。不过,我很高兴知道如何将它与图中的数字输出结合起来。

编辑2

这就是我希望它被使用的方式:

0 投票
3 回答
2586 浏览

conventions - Forth 源代码文件最常见的文件扩展名是什么?

我见过人们用扩展名, 和.4th..fth保存Forth 源代码文件。Forth 源代码文件最常见的文件扩展名是什么?.frt.f

0 投票
1 回答
572 浏览

forth - 在 Forth 中打印函数的定义

当一个词已经在 Forth 中定义时,有没有办法打印它的定义?

我听说 Forth 的许多内置函数,如emitdrop等,都是根据语言本身定义的,我希望能够查看它们的定义。

0 投票
2 回答
1398 浏览

stack - 在 FORTH 中获取当前堆栈大小

在 Forth 中如何获取当前堆栈中的元素数量?

我问这个是因为我想创建一个打印出堆栈所有元素的函数,例如:

但是现在我需要在调用时手动指定堆栈大小。

0 投票
2 回答
613 浏览

forth - 在 Forth 中从堆栈中获取第 n 个元素

有没有办法通过 Forth 中的索引访问堆栈的元素,而不弹出它上面的所有元素?

例如,如果我将数字 1 到 1000 推入堆栈,我如何获得第 500 个元素?

0 投票
1 回答
1476 浏览

assembly - 6502轻量级压缩算法

我正在为我正在编写的 Forth 在 Commodore PET(为了好玩)上的双盒式磁带机上实现虚拟内存。如果你有兴趣的话,我到目前为止在http://github.com/chitselb/pettil 。

我打算使用 PET 的原生 192 字节磁带数据文件格式。哦,是的,所有东西都只有 32K 的 RAM 。我在语言中嵌入了 Woz 出色且非常节省内存的 Sweet-16 解释器。

Forth 块(通常)是 1024 字节。为块 ID 添加两个字节将可用虚拟地址空间限制为 64 兆,远远超过磁带上的容量。将有一个“播放”卡座(设备 1)和一个“记录”卡座(设备 2),并且 FLUSH 将涉及将整个虚拟内存从一个驱动器复制到另一个驱动器。为什么要向风车倾斜?因为在过去,盒式磁带是大多数 PET 所有者拥有的,包括在内。

大多数数据将是 Forth 代码的屏幕,在这个实现中它将是 1000 字节的文本和一个 24 字节的换行表,因为我也使用了 PET ROM 屏幕编辑器。我正在寻找的任何东西(可能)会为此目的击败简单的运行长度编码,但没有像 Lempel-Ziv 这样复杂的东西的 CPU 和内存开销。除了“忘记它”之外的所有建议都值得赞赏。

0 投票
1 回答
435 浏览

shebang - Unix shebang 与 Gforth

当脚本顶部有一个shebang时,我无法让Gforth运行,例如:

Unix 似乎正在启动 gForth,但 gForth 本身在 shebang 线上窒息。我不确定如何定义一个词以使 Forth 以不同的方式解释 shebang 行(不是说它不能完成,但我只是不确定它会如何)。

我考虑过使用脚本将代码文件提供给 gForth,但是一遍又一遍地这样做会很尴尬。有没有办法让 gForth 像其他语言一样接受 shebang?

0 投票
1 回答
406 浏览

compilation - 在编译的单词中编译匿名单词

我目前正在研究一个用 Forth 编写的小型解释器。对于一个小的优化,我试图有一个创建编译词的词。例如,行为如下:

到目前为止,我尝试了几种方法,但都没有奏效(像上面那样天真,切换到解释模式,尝试编译 Forth 源字符串)。这真的可能吗?