GNU Forth

2021-02-18 02:05:54

Gforth是GNU项目的Forth实现(当前版本0.7.3,请查看用户手册)。可以在GNU的Gforth目录中找到源代码发行版,还可以找到流行平台(例如Windows,GNU / Linux等)的源代码和二进制发行版。可以在Gforth的家中找到,也可以在Savannah的git存储库中找到开发版本的快照。阅读Gforth快照手册中有关快照的更新文档。

Gforth使用GCC编译快速直接或间接线程的Forth; Gforth完全符合ANS FORTH。 Gforth的作者是Anton Ertl,Bernd Paysan,Jens Wilke,Neal Crook,DavidKühling等。

Gforth项目的目标是为ANSIForth开发标准模型。这可以分为几个子目标:

它应该成为标准,即被广泛接受和使用。这个目标是最困难的。

强大的。它应该提供今天认为必要的所有东西,甚至还包括那些尚未被认为必要的东西。

有一个面向对象的程序包,几乎用普通的ANS Forth(现在是Gforth发行版的一部分)编写。

amd64 gdb反汇编程序可解决gcc 4.6和4.7问题(换行符和超级指令)的语法更改(自动检测)解决方法

要求::在某些平台上,运行时需要libtool和gcc(用于libcc C接口)和gdb(用于反汇编程序(SEE))。

'现在只处理一个(x)字符:' ab不再被接受,' a'现在产生(十进制)97

16位和32位存储器访问:UW @ UL @ SW @ SL @ W! L! W @ L @ W L

添加了对基于ffcall库构建的C接口的可选支持(比旧的库更可移植,功能更强大,但仍未记录)。要使用它,必须在构建Gforth之前安装ffcall库(请参阅INSTALL)。

现在,Gforth-fast使用静态超级指令(某些平台上有一定的加速)。通常,这是透明的(除了加速之外),但是有许多用于控制静态超级指令生成的命令行选项。

现在支持长字名称(在32位系统上为512MB)(更改为标头格式)。

新的线程代码执行方法:以原始语言为中心(允许以下操作),混合直接/间接线程(更轻松的可移植性)以及动态超级指令(Athlon上的典型加速:因子2)。新引擎gforth-itc用于处理一些潜在的向后兼容性问题(请参见手册中的“直接或间接线程化”)。

支持它们的OS上的大文件支持(即,在32位计算机上具有2GB以上的文件)。

将prims2x.fs通用化为Vmgen(请参见README.vmgen等);在prims中使用了新功能(例如,自动处理返回堆栈和指令流)。

现在有两种引擎:快速引擎(gforth-fast)与早期版本中的gforth至少一样快;调试引擎(gforth)支持信号的精确回溯(例如,非法内存访问),但速度要慢1-2倍。

现在,默认情况下,块文件从块0开始(而不是块1)。如果周围有块文件,请添加1024字节以进行转换,或者执行1 OFFSET!建立旧的行为。

Gforth现在不会在阅读时将换行符转换为LF。而是,READ-LINE现在将LF,CR和CRLF解释为换行符。输出上的换行符采用操作系统喜欢的格式。

在支持Unix 98 SA_SIGINFO语义的平台上,您会获得关于SIGSEGV和SIGFPE的更精确的错误报告(例如,使用" stack下溢"代替"无效的内存地址")。

如果批处理中出现错误(即未抛出),Gforth现在会生成退出代码1。

您可以使用" gforthmi-应用程序..."生成一个映像,该映像在直接调用时(而不是通过gforth -i)处理整个命令行。

手册的重要扩展(包括引言在内),其中许多是由于新的团队成员:NealCrook。

添加了386,Alpha,MIPS的汇编程序和反汇编程序(感谢Andrew McKewan,Bernd Thallner和ChristianPirker的贡献)。欢迎为其他体系结构的汇编程序和反汇编程序做出贡献。

路径处理:"。"路径开头的代表最近的封闭文件所在的目录(如果没有,则为工作目录)。 "〜+"表示工作目录。现在,默认路径为"。"在前。

现在可以在IRIX(以及其他没有链接器标志-d的基于MIPS的系统)上运行。现在,直接线程可在PowerPC上运行(604e上的速度提高了20%)。对m68k的更好支持(感谢Andreas Schwab和JorgeAcereda)。可以创建包含映像的可执行文件(对于非OS系统)。

添加了很多嵌入式控件(EC)的东西。支持的控制器和小型CPU是Siemens C16x,8086、6502,混合模式的FPGA MISC,Bernd Paysan的4stack处理器。未完成:ShBoom别名PSC1000,H8,AVR。

将F0重命名为FP0(避免十六进制出现意外行为),并为S0,R0,L0添加了别名SP0,RP0,LP0(建议以后使用)。

将PARSE-WORD重命名为SWORD(PARSE-WORD与OpenBoot和dpans6 A.6.2.2008中NAME的含义一起使用) 重组文件:添加目录并将许多文件重组到其中; 将文件重命名为8.3格式,以与完全损坏的系统一起使用(但仍然有些文件无法在其中使用)。 没有日志信息的各种更改仅称为大型补丁。 交叉编译器现在还支持仅针对未定义或正向引用的单词进行编译。 支持某些本机代码生成的插件(用于PSC1000)。 创建于21may1997。 最后修改日:Bernd Paysan撰写的10nov2015