本帖最后由 杨为民 于 2024-11-19 16:00 编辑
Forth是一种非常适合单片机编程的计算机语言。自从2012年看到STC推出了划时代的STC15F/IAP15F系列单片机后,了解到STC15F单片机在STC-ISP的配合下,不仅可以简单地利用串口将PC机上编译好的机器码烧录到单片机上,而且可以利用其IAP功能让用户在程序运行中动态地将机器码写到CODE区域给CPU执行,觉得将FORTH语言引入到STC单片机上是时候了。下图是当时的手册封面: 笔者在2013年已经完成了“金湖X51 Forth编译器”,可以将Forth 8051汇编语言的程序编译为HEX烧录文件,供STC-ISP烧录到单片机上去运行。 目前STC已经推出了新一代AI8051U单片机,其中已经用硬件实现了32位整数的乘除运算和单精度浮点数的各种运算,而即将推出的AI80952U单片机更是提供了各种硬件运算功能和创记录的存储空间,笔者认为应该与时俱进,推出新一代的“金湖X51 Forth编译器”了。 本文是介绍使用Forth语句进行STC单片机程序设计的系列文章中的第一篇文章,是笔者2013年6月的一次讲座的PPT文字。 (1)Forth的历史 ◆1968年 Charles Moore 发明了 Forth ◆本意 Forth — Fourth 第四代计算机语言 ◆1978年 成立了 FIG 小组,把Forth移植到9种微处理机中,统一称为 fig—Forth ◆fig—Forth的源代码全部公开,是最早的“开源代码”之一 ◆FIG小组的成员在FORTH—79的基础上,制定了FORTH—83标准 ◆F83是最后一个标准 ◆Forth语言之父传奇: 2010年,已经72岁的Forth语言之父Charles H. Moore仍然熊心不老,他宣布推出144核的CPU,运算能力达到1000亿操作/秒。更有意思的是,这款CPU实现了Forth语言的一种方言colorForth的指令集。 1968年在美国国家射电天文台工作期间,他和Elizabeth Rather共同设计了基于栈的结构化、过程式语言Forth。自1980年代他的兴趣转向芯片设计,开发了一系列芯片,其中有的曾用于许多NASA的航天项目。 1990年开始他开发了一个VLSICAD,名为OKAD。 2009年他与人合办了GreenArrays公司,自任CTO。 (2)Forth是什么? ◆ Forth 是一种不寻常的语言,它可能比其它任何一种语言所应用的项目都多。当我们面对特别严格的开发时间、执行速度、代码密度或者任何这些组合要求时,它明显地是一种可选择的语言。 ◆ 不论什么时候,把 Forth 与传统的语言比如 C 语言进行直接的对比测试, Forth 总能打败竞争对手,在更短的时间内产生更小、更快、更可靠的代码。 (3)Forth 是一个秘密武器 ◆ Forth 也被称为是“计算机世界中保守得最好的秘密” – 大公司从比如 Laboratory Microsystems, Inc. 、 Forth, Inc.或者 MicroProcessor Engineering, Ltd 公司购买专业化的 Forth 系统,然后就三缄其口。 ◆ 例子: – 著名的SUN工作站,开机后就进入 Forth – 系统管理员忘记了开机密码 – SUN公司给了一段 Forth 指令就破解了 ◆ 一些人可能(不善意地)猜测这些巨人公司羞于承认自己使用 Forth ,但是我相信它们实际上是向竞争同行隐藏了自己的一个秘密武器。 – 最新的CPU芯片中植入了 Forth – 微代码 (4)Forth 是一种程序设计语言 ◆ 交互式的语言: – 解释器,立即执行 – 也可以编译后执行 ◆ 完全结构化的程序: – 没有GOTO语句 ◆ 很高的计算速度: – 接近汇编的速度 ◆ 非常高的移植性: – 不亚于JAVA和C ◆ 容易定义新的数据结构: – 可以从汇编和CPU层次定义 ◆ 轻易产生新的FORTH功能: – 本身是模块化的,可以组合新的结构 ◆ 可以定义新的“语法”: – 这是最与众不同的 (5)Forth 是一种操作系统 ◆ 具有透明的内存分配机制 ◆ 具有自己的“系统堆栈” ◆ 具有多任务分配的功能 ◆ 具有控制全部硬件的能力 ◆ 具有提供应用程序各种I/O接口的能力 ◆ 具备中断调度任务的能力 ◆ 已有最基本的两个应用程序: – 源程序编辑和汇编语言编译程序 ◆ 具有加载新程序并运行的能力 ◆ 具有磁盘文件管理功能 ◆ 可以独立引导的操作系统 (6)Forth 是一台“虚拟机” ◆ Forth 的基本元素是字“WORD” – 虚拟机的 机器代码 ◆ 具有独立的指令寄存器 IP – 虚拟机的 PC ◆ 具有独立的系统堆栈寄存器 SP – 虚拟机的 SP ◆ Forth具有核心字 – 虚拟机的 指令系统 ◆ Forth具有基本字 – 虚拟机的 微指令系统 (7)Forth 是一个新时代 ◆ Forth的核心 – “字节码”和“虚拟机” ◆ Forth芯片 – 第一次为了一种语言生产CPU芯片 ◆ JAVA语言 – Forth 与 C语言的后代 – Java字节码、 Java虚拟机和Java芯片 (8)Forth 是一种哲理 ◆ Forth 的方法 – 自上而下的思维方式,自下而上的编程方式 ◆ Forth 的观点 – 程序员是语言的主人,程序员可以发明语法 ◆ Forth 的主张 – 人是最可靠的。所有的一切是透明的和可支配,包括内存分配 ◆ Forth 的理念 – 语言是有生命的,是在交流中不断发展的,包括词汇、语法和源代码 (9)Forth 是一种爱好 ◆我的FORTH业余爱好 – 1985年在TRS – 80 微机上开发了“STANDARD FORTH 2.0” – 1989年在IBM PC/AT 微机上开发了“F88”独立多任务实时操作系统 – 1994年在PC机是开发了基于Forth的“D”语言。DOS环境,独立编译,文本程序,交互式条件和循环语句,类shell命令编译器 – 1996年 实现了“D”语言中文版。中文字库和显示方式。自定义“混合输入法”,拼音和五笔和联想输入 (10)Forth 是一种梦想 ◆ Forth 是一种梦想 – Forth 的存在是让每个程序员都成为创造者,而不是奴隶 ◆ 我的“梦想” – 可全部用中文的程序设计语言 – 在STC单片机上实现Forth操作系统
|