找回密码
 立即注册
查看: 2844|回复: 5

F351(1):Forth是什么?

[复制链接]

188

主题

1406

回帖

5508

积分

荣誉版主

积分
5508
发表于 2024-11-19 15:56:07 | 显示全部楼层 |阅读模式
本帖最后由 杨为民 于 2024-11-19 16:00 编辑

Forth是一种非常适合单片机编程的计算机语言。自从2012年看到STC推出了划时代的STC15F/IAP15F系列单片机后,了解到STC15F单片机在STC-ISP的配合下,不仅可以简单地利用串口将PC机上编译好的机器码烧录到单片机上,而且可以利用其IAP功能让用户在程序运行中动态地将机器码写到CODE区域给CPU执行,觉得将FORTH语言引入到STC单片机上是时候了。下图是当时的手册封面:
Fig_01_STC15F.jpg
Fig_02_STC-ISP V6.38.jpg
笔者在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操作系统

回复

使用道具 举报 送花

188

主题

1406

回帖

5508

积分

荣誉版主

积分
5508
 楼主| 发表于 2024-11-20 01:56:25 | 显示全部楼层
本帖最后由 杨为民 于 2024-11-20 02:12 编辑
wnag*** 发表于 2024-11-19 21:12
懵逼中,到底是操作系统还是编程语言?

(1)有一种计算机语言叫“Forth语言”,很多种计算机上和Windows与Linux操作系统上都有对应的编译器,你可以使用Forth语言编写程序实现各种应用。

(2)有一种计算机系统“Forth系统”,它的软件本身就包含了源程序编辑、项目管理、文件系统和编译器。Forth系统有两种形式:
一种是以应用程序的形式存在在各种操作系统上面,这种系统被称为“标准Forth系统”。标准Forth系统在微机的DOS、Windows、Linux以及早期的PDP-11系列、VAX系列小型中型计算机的操作系统上面都有;
另一种是以开机就引导起来的Forth操作系统,这种系统被称为“独立Forth系统”,除了标准Forth系统的功能,还增加了硬件管理功能和多任务调度功能。独立Forth系统在各种微机和小型计算机上都有,尤其是包括8051CPU和ARM等各种单片机上都有。

(3)有一种BIOS叫“Forth BIOS”,计算机一开机就引导到Forth系统运行状态,在这种运行状态下,操作员可以通过字符终端进行类似“MS-DOS”的各种操作,包括读写/低级格式化/复制硬盘和引导起不同的操作系统。
目前只有SUN工作站一开机直接启动到Forth提示符进入Forth状态,据说其余的一些小型计算机是保密的要用特殊方法开机才进入Forth状态。
(4)据说早期两个超级大国的火箭系统的CPU很小,运行的就是“专用Forth系统”。

Fig_03_ROM_FORTH.jpg



(5)中国有一种加密芯片叫“Forth超长指令集芯片”,它的一端接耳机或者话筒的模拟信号,另一端直接接数字调制解调器,30年前就投入使用了。
(6)有几种CPU叫“Forth CPU”,除了莫尔祖师爷的,中国台湾兄弟也有小批量的“Forth CPU”和开源“Forth FPGA CPU”,台湾兄弟的“Forth研究会”至今还是世界上少数活跃的“FIG”团体,他们每年都举行“Forth 年会”。
Fig_04_FORTH的禅思.jpg


(7)有一种中文计算机语言叫“易语言”,它的基础就是来自Forth语言。下图应该是其创始人的大作:
Fig_05_易符真经.jpg

Forth语言语法规定:Forth词(Forth word)与词之间用空格分开,因此在使用中文时就避免了编译器语法分析时的中文切词难题,天生适合中文编程语言。
笔者的文章:
Ai8051U单片机,从入门到精通(3):使用长缨-I号C351编译器的中文编程方法
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=9959
(出处: 国芯技术交流网站)
在论坛外网上发表时,有网友留言“你有本事将你中文程序里的空格去掉试试?赌你不敢”。我当然不敢,使用笔者的长缨系列和金水系列C语言编译器和金湖系列Forth语言编译器进行中文编程的首要条件就是每个中文词之间要用空格或者其他分隔符分开。
(8)中国正在中小学推广一种类似LOGO语言的计算机编程语言,(百度百科:LOGO语言“logo”一词源于希腊文,原意为“文字”或“思考”、“想法”。是一种过程性语言,是在1967年由美国麻省理工学院(MIT)佩帕特(Seymour Papert)教授指导下的一个研究小组在LISP语言基础上,专门为儿童研制开发的编程语言。Logo语言虽然结构简单、却有丰富的表达方式,体现了现代计算机科学许多最新概念
Fig_06_国家通用语言编程.jpg

其实这种计算机语言就是在Windows环境使用中文Forth语言,这种系统就是一个Windows下的应用程序。


(9)所以,我也不知道Forth是什么:
道可道,非常道;名可名,非常名。
无,名天地之始;有,名万物之母。
故常无,欲以观其妙;常有,欲以观其徼。
此两者,同出而异名,同谓之玄。
玄之又玄,众妙之门。





回复

使用道具 举报 送花

188

主题

1406

回帖

5508

积分

荣誉版主

积分
5508
 楼主| 发表于 2024-11-20 03:16:05 | 显示全部楼层

下面是笔者以前发的关于STC单片机上Forth的帖子:


STC计算机诞生记(上)
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1711
(出处: 国芯技术交流网站)

超长指令集与FORTH语言花絮
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=999
(出处: 国芯技术交流网站)

未来的STC计算机会长什么样?
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=949
(出处: 国芯技术交流网站)

开发STC单片机的最佳计算机语言是什么那种语言?
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=882
(出处: 国芯技术交流网站)
回复

使用道具 举报 送花

5

主题

198

回帖

1599

积分

金牌会员

积分
1599
发表于 2024-11-20 04:08:33 | 显示全部楼层
There are many forth examples on the web

https://wiki.c2.com/?ExampleForthCode

forth was able to run on very small microcontrollers (eg Zilog Z8) and was a reasonable trade off for ROM microcontrollers.

The release of FLASH controllers and C/Pascal/BASIC compilers for MCUs pretty much relegated forth to niche uses.
New parts like Ai8051 and Ai8052 could certainly give a powerful platform for forth, but a part like Ai8052 could also run Python.

It will be interesting to see what is released and used.

回复

使用道具 举报 送花

已绑定手机

25

主题

594

回帖

3108

积分

论坛元老

积分
3108
发表于 2024-11-20 15:52:44 | 显示全部楼层
牛啊,不过,你的编译器要是能够嵌入STC的那个简易的IDE里面就好了!
不停地学习
回复

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

81

积分

注册会员

积分
81
发表于 2026-9-4 16:44:17 | 显示全部楼层
记得以前有人用STM8做过FORTH的东西!还有关于FORTH的一本书。。。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-19 22:56 , Processed in 0.072433 second(s), 71 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表