Forth
编辑Forth 是一种命令式的、基于堆栈的编程语言。 Forth 系统包括用于运行的操作系统和用于创建 Forth 程序的开发环境。 因此,在计算机上实际实现的 Forth 称为 Forth 系统。 与其他编程语言一样,今天的许多版本都生成高度优化的机器代码。
第四系统
编辑只需几千字节的内存就可以实现一个完整的 Forth 系统。 此属性在其创建时极为重要,因为当时的计算机可用 RAM 相对较少。 此外,Forth 系统的实际核心非常小,系统的其余部分已经在 Forth 本身中定义。 这使得将 Forth 系统移植到其他处理器上变得更加容易。 这种积极的品质在 20 世纪 70 年代后期带来了相对广泛的分布。
今天,这使 Forth 成为一种高级语言,特别适合对各种微控制器进行编程。 然而,组合系统用于开发,其中中间代码在主机 PC 上预编译,只有结果存储在客户端的微控制器中。 因此,可以省略 Forth 系统的一些交互功能,并且可以对源代码进行更广泛的注释。
内部 Forth 体系结构的基本元素是两个堆栈(数据堆栈和返回堆栈),一小部分可以独立于硬件模拟的寄存器和字典,一个将标记与要调用的函数链接起来的跳转表。 放置在堆栈上的数据字称为单元,其大小可以是 16、32 或 64 位。 此外,词典还可以根据需要分为多个词表。 Forth 系统本身是作为虚拟机实现的。 所有指令和数学表达式均以反向波兰表示法 (RPN) 编写。 这是因为 Forth 系统首先检查每个输入值是否存在于字典中。 如果是这种情况,则调用相应的函数,然后可以访问到目前为止创建的所有条目。 如果字典中不存在该值,则将其解释为数值或字符串。 在这两种情况下,后续条目此时尚未被读入,因此对程序流程没有影响。 因此,人们还可以按照创建时的习惯,轻松地通过顺序介质传输输入数据流,例如一叠穿孔卡片或磁带。
Forth 有两个主要特征,使它有别于同时代的许多其他编程系统:
第四次编程
用 Forth 编程与其他语言有根本的不同。 在 Forth 中,内置函数和编程函数(所谓的词)之间没有区别,但是有一个直接在机器代码中实现的词(原语)的功能核心。 也没有直接的例程,而是将语言扩展为包含其他单词。 在 Forth 中,程序的开始对应于一个词的调用,因此它代表了程序的主例程。 由于编译器也通过定义在开发环境中运行的词来扩展,从而直接操作中间代码,这导致一定程度的灵活性,只有少数其他高级语言才能实现。
UPN 表达式示例
表达式在读取时已被处理。 输入字符串按空格分成单词。 “5”这个词通常不在字典中,它被解释为一个数字,即它的值(这里是 5)被压入值栈。 这同样适用于单词“3”。 但是,现在后面的“+”字在字典里。 因此调用相应的函数。 该函数将栈顶的两个值弹出,将它们相加,并将结果压回栈中。 小“+”功能通常以各自的机器语言实现。 数字 8 现在在堆栈中。下一个单词是 "7",数字 7 被放入堆栈。
后面跟着单词“2”,这是数字 2 在堆栈中结束的地方。 接下来,再次是单词“+”,它再次调用加法函数。 数字 9 现在在堆栈的顶部,数字 8 在它下面。然后在字典中读取并找到单词“*”; 相应的函数从栈中取出顶部的两个值并将其乘积放在顶部。 根据 Forth 系统,乘法函数可以作为机器代码实现,或者本身已经在 Forth 中实现。 下一个单词现在是“.”。 这个词从堆栈弹出顶部值(现在是数字 72)并将其打印在显示设备上。
应用
编辑与汇编程序相比,Forth 是一种高级语言,但与硬件相关,因此执行速度非常快。 可升级性是 Forth 的核心原则; 无论如何,您必须自己编写大部分功能。 有了 RTX2010,甚至还有可以直接运行 Forth 的太空应用芯片组。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/372003/