问题标签 [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.
memory-management - 释放先前分配给变量的内存(使用 create)
我正在阅读有关内存分配/释放的Gforth手册,这是我无法理解的。假设我分配了一块内存来保存四个整数,如下所示:
然后,也许我分配了更多内存,也许也释放了一些内存,现在我想 deallocate foo
。我怎么做?执行foo free
并foo 4 cells free
导致错误。
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:
string-formatting - 将文字空格字符添加到图中的数字输出
经过大约几个小时的反复试验,我不知道该怎么做......这是我正在处理的代码:
顺便说一句......没有更简单的方法来打印输出,类似的东西printf
会很棒。另一种可能性是将空格字符指定为一种字符串的第一个字符s" "
。
编辑:
我发现我可以做到:s\" \040 test"
在 Gforth 中(尽管手册上说它不是标准的)。这s\" \x20 test"
可能是标准的,但我不太明白句子中表示它是否标准的部分在哪里相关。不过,我很高兴知道如何将它与图中的数字输出结合起来。
编辑2
这就是我希望它被使用的方式:
conventions - Forth 源代码文件最常见的文件扩展名是什么?
我见过人们用扩展名, 和.4th
..fth
保存Forth 源代码文件。Forth 源代码文件最常见的文件扩展名是什么?.frt
.f
forth - 在 Forth 中打印函数的定义
当一个词已经在 Forth 中定义时,有没有办法打印它的定义?
我听说 Forth 的许多内置函数,如emit
、drop
等,都是根据语言本身定义的,我希望能够查看它们的定义。
stack - 在 FORTH 中获取当前堆栈大小
在 Forth 中如何获取当前堆栈中的元素数量?
我问这个是因为我想创建一个打印出堆栈所有元素的函数,例如:
但是现在我需要在调用时手动指定堆栈大小。
forth - 在 Forth 中从堆栈中获取第 n 个元素
有没有办法通过 Forth 中的索引访问堆栈的元素,而不弹出它上面的所有元素?
例如,如果我将数字 1 到 1000 推入堆栈,我如何获得第 500 个元素?
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 和内存开销。除了“忘记它”之外的所有建议都值得赞赏。
compilation - 在编译的单词中编译匿名单词
我目前正在研究一个用 Forth 编写的小型解释器。对于一个小的优化,我试图有一个创建编译词的词。例如,行为如下:
到目前为止,我尝试了几种方法,但都没有奏效(像上面那样天真,切换到解释模式,尝试编译 Forth 源字符串)。这真的可能吗?