问题标签 [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.
verilog - 用两个单端口 RAM 替换双端口 RAM,用于 Altera FPGA 上的 J1 Forth CPU
出色的 J1 Forth CPU(Verilog 源代码)可用于 Xilinx FPGA。我试图将它移植到 Altera Cyclone II FPGA。
我很难让 Altera 双端口 RAM 宏功能正常工作。从 Verilog 代码来看,我可以使用两个单端口 RAM,而不是双端口 RAM 吗?
真正的问题是,J1 Forth 在运行时会修改自己的代码吗?如果没有,为什么不将双端口 RAM 分成代码 RAM(由 {_pc} 寻址)和数据 RAM(由 _st0[15:1] 寻址)?
c - C中的函数指针表
我正在用 C 语言做一个 Forth 解释器。我无法决定如何更好地实现 Forth 字典。
opcode
是一系列代码 - 单词的功能。所以每个opcode[i]对应于某个函数。我想它应该是一些带有元素的表[opcode<->function pointer]。但是如何实施呢?
我们不知道函数的大小。我们不能使用void*(或者我们可以?),因为我们必须以某种方式只让操作码执行该函数。
我应该怎么办?
forth - 我在哪里可以找到 Forth / Gforth API?
几天前,我从《Starting Forth》一书开始学习 Forth。在编写了我的第一个程序后,我想知道是否有类似Java API或所有已实现方法的综合手册。
你能推荐我一个 Forth / Gforth API 吗?
definition - 如何在 Forth 定义中创建单词
我正在使用Gforth,我想在定义中创建一个词。在 Gforth 的 cmd 行中,我可以输入:
或者更具体地说,我定义了一个数组函数,它期望堆栈上的大小并创建一个带有该数组地址的单词:
因此,如果我输入10 array foo
,我可以稍后使用foo
。
但是如果我10 array foo
在另一个定义中写它会给我一个编译错误。我试过用s" foo"
which compiles 替换 foo ,但它在运行时会爆炸,说:
尝试使用零长度字符串作为名称
有没有办法做到这一点?
audio - 是否有 C 语言的 SuperCollider(或类似的实时合成系统)接口(最好是 DLL 形式)?
我对在游戏引擎中使用 SuperCollider 的各种插件很感兴趣。但是我的编程语言 ( SwiftForth ) 中的 FFI 只支持普通的旧 C 语言 DLL 文件。
我知道对于初学者来说,我需要某种 OSC 接口。然后,SuperCollider 需要以某种方式运行。我还不知道如何在游戏中做到这一点的细节。
我还阅读了一些有关 SuperCollider 命令行界面的内容。这对我想做的事情实用吗?
我对建议和替代方案持开放态度,但唯一不可协商的是 SwiftForth。我已经编写了大量与引擎相关的代码,并希望添加实时合成以实现其独特性和灵活性。
artificial-intelligence - 人工智能编程的 Forth 语言有多强大?
很长一段时间以来,我一直是坚定的Forth'er,学习和调整小语言以满足许多应用程序的需求。过去,我曾经想过使用 Forth 作为一种语言来实现人工智能系统 (AI)。不久前,有人冒险进入MindForth诞生的地方。它显示出可喜的结果,但并没有做太多的工作来改进这个想法。
当然,FORTH 是一种会说您的语言的语言。对字长或定义可以做什么没有限制(硬件限制允许),并且仅将语言结构组织成字典就使其成为一种相当可爱的小语言来实现 AI 逻辑。
在代码中解决 AI 问题的传统方法是使用/创建一个基于规则的系统,其中语言被分解为多个部分,这些部分随后被转换为复杂的规则,直到开发出完整的语言。如果你问我,这真的很乏味。Forth 只需成为 Forth 即可为您完成这种跳绳。
我一直在关注一个个人项目,该项目将扩展 MindForth 已经取得的成就,而是尝试开发一个完整的人工智能供个人使用。
我应该如何进行?
forth - 在 Forth 中实现 SWAP
我在接受 Chuck Moore 的采访时看到了这一点,他说:
操作该堆栈的词是 DUP、DROP 和 OVER 句点。没有,好吧 SWAP 非常方便,你想要它,但它不是机器指令。
所以我试图SWAP
只用DUP
,DROP
和来实现OVER
,但不知道怎么做,至少不增加堆栈。
这是怎么做到的,真的吗?
rsa - Forth 语言中的 RSA/DSA 实现
我需要为定制的Forth内核开发一个PGP实现,我想知道是否有人可以给我指点,告诉我在哪里可以获得(任何)Forth 中的RSA / DSA实现以用于该项目。
我更喜欢具有灵活许可证的源代码,它允许我将它用于我想要的任何东西。这将为我节省大量时间来编写我自己的 RSA/DSA 算法,然后需要数天时间来调试并成熟为稳定的东西。
此外,我在哪里可以得到和 RSA/DSA 实现的纯汇编 x86 架构 32/64 位,最好在英特尔语法中用于NASM作为 Forth 代码的替代方案。我可以简单地使用汇编代码将本机字写入内核(因为内核是 64 位汇编语言)来执行算法的功能。
forth - 在 Forth 中实现求幂
我正在使用Gforth来尝试实现求幂。从理论上讲,我了解基于堆栈的语言应该如何运行。但是,我在 Gforth 上实现它时遇到了困难。
这是我现在拥有的:
但是,当我运行它时,我看到一个堆栈下溢,如:
Gforth 的循环结构是否在循环时操纵堆栈?
我对 Forth 的工作原理一无所知,因为我在网上看到的大多数循环示例都相当复杂,而且对于 Forth 的新手来说很困惑。
我的实施有什么问题?