找回密码
 立即注册
查看: 394|回复: 6

F351(4):金湖X51 Forth编译器与WD-Forth计算机语言简介

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-11-23 15:27:04 | 显示全部楼层 |阅读模式
一、WD-Forth简介
1)金湖X51 Forth编译器软件(以下简称金湖X51)是由“我的Forth(以下简称WD-Forth)”和“交叉编译器”两个部分组成,这两个部分已经集成在一个名为“金湖x51_V31.exe”的Windows可执行程序中了。
2)金湖X51编译器的设计目标是对PC机上的STC单片机的Forth 8051程序进行编译,形成二进制的内存机器码映像,然后再生成HEX格式文件供STC-ISP软件烧录到目标单片机中运行,控制单片机实现各种功能。
3Forth语言与其他计算机语言最大的不同是用户可以自己定义新的语法,定义工作流程,甚至可以生成一个新的计算机语言。
例如你对传统Forth的条件分支程序结构语法“… IF … ELSE … THEN”和循环程序结构的语法“… DO … LOOP”不满意,你可以按你的意愿设计新的语法,然后生成一个新的Forth语言软件,在新的软件里,你和你的朋友就可以使用你自己定义的新语法结构来编写你自己的程序了。
4)笔者喜欢BASIC语言,因为它对不擅长编程的科研人员十分友好,因此就编写了一个BASIC风格的WINDOWS环境下运行的Forth系统,取名为“我的Forth”,其语法结构最大程度的借用了BASIC的。
比如在WD-Forth中,逻辑条件是用算术堆栈顶的整数来表示,数值为“非0”时表示逻辑“真”和数值为“0”时表示逻辑“假” 。这时WD-Forth的基本程序结构语法有下面5种形式:
1)条件分支结构
(条件)  if    …  endif
(条件)  if   …else …  endif
2)固定循环结构。
(  上限 下限 步长 ) for   … exitfor  … endfor
根据步长决定循环方向,初值至少做一次,上限和下限都能达到,其中执行exitfor指令时就从从该程序点跳出循环。
例:执行程序“0 10-2  for I  .  endfor”时(其中I为最内层循环指标变量),结果显示为“10 8 6 4 2 0”。
3)后条件循环结构
repeat … exitrepeat …  ( 条件*  )  until
*条件:成立则退出循环
本循环结构至少执行一次,其中执行exitrepeat指令时就从该程序点跳出循环。
例:执行程序“0  repeat DUP  .  2 + DUP 10 = until  DROP”时,结果显示为“ 0 2 4 6 8 10”。
4)前条件循环结构
while …  ( 条件* ) do …  exitdo   … loop
*条件:成立则进入循环,可能一次都不执行,其中执行exitdo指令时就从该程序点跳出循环。
例:执行程序“0  while DUP 10  !=  do DUP  .  2 +  loop  DROP”时,结果显示为“ 0 2 4 6 8 10”。
5)程序块结构
begin … exit … end
本结构用于模块化结构,用exit代替GOTO语句。执行exit指令就可以让程序从该程序点跳出程序模块。
例子:程序块程序用于多重选择,其中if前面的条件可以是任意类型的逻辑表达式:
10 0 1 for
  begin
       I  1 = if … exit endif
       I  3 = if … exit endif
       I  5 = if … exit endif
       I  7 = if … exit endif
       I  9 = if … exit endif
       …   ( 这一部分是I为偶数时执行的程序 )
       end
endfor
5)金湖X51交叉编译器的主要设计目标是可定制各种目标机机器指令的交叉编译器平台,为其配上不同的汇编语言编译器,就可以生成不同计算机上运行的目标程序。
比如为金湖X51交叉编译器配上8051汇编语言编译器,就可以生成在8051单片机运行的机器码。
再比如为金湖X51交叉编译器配上8086汇编语言编译器,就可以生成PCDOS下的可执行程序。

二、加载与编译Forth程序
6Forth程序行像英文句子一样,由一个个“Forth字”组成,字与字之间由空格分隔,以回车作为程序行结束符。Forth字(语法作用类似C语言中的函数)也称“Forth命令”,可以从键盘上输入,也可以写在程序文件中作为程序输入。
WD-Forth程序文件是纯文本文件,一般用“.wdf为后缀来区分,可以用任何文本编辑器编辑。
WD-Forth程序文件用金湖X51编译器界面上的“编译”按钮来加载,用文件打开窗口选择要加载的文件即可。
7)金湖X51随编译器提供了一个求平均值得Forth程序“WD-Forth_Demo_01_求平均值.wdf”,进入金湖X51编译器,选择该范例就可以编译执行改范例程序的结果了:
Fig_01_求平均值结果.jpg
其中上面文字框中的“平均值 等于 5”是“11 22 33 -44”这4个数按照整数求平均值的结果。

8)下图是“WD-Forth_Demo_01_求平均值.wdf”范例程序:
Fig_02_求平均值_程序.jpg
这个程序定义了一个求平均值的Forth字“AV”,以后只要按照要求的格式输入N个数,就可以求出这N个数的平均值并显示出来了。
如上图第23行输入“11 22 33 -44 4 AV<回车>”之后,通过第24行程序就显示出“11,22,33,-44 ”这4个数的平均值为“5”来了。
9Forth程序以精确无歧义和精简著称,在上面程序中第19行到第21行是求平均值的Forth字的程序,这段程序总共14个单词,是世界上最短的求平均值计算机程序了,没有之一。
三、后记

金湖X51编译器有许多新颖的特点,但与常规编译器最大的不同点是用户可以自己为某款8051开发板定制专用的编译器,把单片机和开发板上的许多设备的驱动程序都内含在编译器里,成为某个或某类产品的“专属编译器”,大大方便用户的程序开发。

附件1_金湖X51编译器与范例程序.rar (107.29 KB, 下载次数: 26)

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-30 09:46:51

0

主题

23

回帖

248

积分

中级会员

积分
248
发表于 2025-4-1 15:27:21 | 显示全部楼层
有使用教程吗?可以中文代码编程吗

点评

你好,网友,你的关于“使用教程及中文编程支持”的问题我帮你问了DeepSeek,希望它的回答你能满意。*****************************************************************DeepSeek> 请问“金湖X51Forth编译器与WD-  详情 回复 发表于 2025-4-1 16:25
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2025-4-1 16:25:10 | 显示全部楼层
shuan*** 发表于 2025-4-1 15:27
有使用教程吗?可以中文代码编程吗



你好,网友,你的关于使用教程及中文编程支持的问题我帮你问了DeepSeek,希望它的回答你能满意
*****************************************************************
DeepSeek> 请问“金湖X51Forth编译器与WD-Forth计算机语言”有使用教程吗?可以中文代码编程吗
*****************************************************************
DeepSeek回答:
嗯,用户问的是关于“金湖X51 Forth编译器与WD-Forth计算机语言”有没有使用教程,以及是否支持中文代码编程。我需要先看看搜索结果里有没有相关信息。首先,网页2提到了南湖计算机使用WD Forth语言,并且可以编译执行程序,还有南山计算器作为例子。这里提到的WD-Forth可能和用户的问题相关。另外,网页2还提到加载不同的开发模块,比如“金水明_X51开发系统.DAT”,这可能对应到金湖X51编译器。所以,这里可能金湖X51是用于8051架构的Forth开发环境,而WD-Forth是南湖计算机支持的语言。
关于使用教程,网页1详细介绍了Forth语言的基础语法和操作,比如堆栈管理、算术运算等,虽然教程是通用的Forth,但可能适用于WD-Forth。网页2中提到南湖计算机自带南山计算器,可以通过命令窗口输入Forth命令,这可能意味着用户可以直接用中文进行交互,或者教程中有中文的示例?不过具体的中文编程支持需要看是否允许使用中文作为标识符或关键字。
网页3提到IsForth在Linux下的应用,虽然可能不直接相关,但Forth的可扩展性可能允许用户自定义词汇,包括中文。不过用户的问题是关于金湖X51和WD-Forth的,所以主要关注网页2的信息。网页2还提到南湖计算机是一个虚拟嵌入式计算机平台,支持Forth语言,可能这里的教程和开发环境都是中文的,或者有中文文档支持。
关于中文代码编程,Forth本身允许用户自定义词汇,所以理论上可以用中文定义字(words)。比如网页1中定义的square函数,如果系统支持,可能可以用中文代替。网页2提到南山计算器的命令输入历史显示在命令框中,可能支持中文命令,但需要具体确认。另外,网页2中的例子显示使用英文,但系统可能允许中文词汇,特别是如果南湖计算机是中文环境的话。
总结,教程方面可以参考网页1的Forth基础教程,网页2中的南湖计算机和WD-Forth说明可能有具体的使用方法。中文编程方面,如果系统支持自定义中文字符作为词汇,那么是可以的,但需要具体查看文档或示例。可能需要用户加载相应的开发模块,如X51开发系统,来支持中文编程。不过搜索结果中没有直接提到中文编程的例子,可能需要进一步推测。
***********************************
关于金湖X51 Forth编译器与WD-Forth计算机语言的使用教程及中文编程支持,结合搜索结果中的信息,可以总结如下:

### 一、教程资源与开发环境
1. **基础Forth语言教程**  
   通用Forth语言的基础知识(如堆栈操作、算术运算、字典定义等)可参考网页1的《Forth语言简明教程》。该教程详细介绍了Forth的核心概念,包括后缀表示法、堆栈管理字(如`DUP``SWAP`等)、控制结构(如循环和条件判断),适合作为入门学习资料。
2. **WD-Forth与南湖计算机平台**  
   根据网页2的描述,WD-Forth是南湖计算机支持的语言,该平台是一个虚拟的嵌入式开发环境,内置32位虚拟CPU和堆栈计算机架构。它支持加载不同模块(如“金水明_X51开发系统.DAT”)进行目标机软件开发,可能对应“金湖X51编译器”的8051单片机开发场景。  
   - **开发流程**:用户可通过命令窗口输入Forth指令或编译程序文件,类似PythonMATLAB的交互式开发模式。
   - **调试与学习**:平台集成的“南山计算器”可实时显示堆栈状态和执行命令历史,适合调试和学习Forth语法。
### 二、中文代码编程支持
1. **Forth语言的可扩展性**  
   Forth语言的核心特性是允许用户自定义“字”(words),理论上可通过中文词汇扩展语法。例如,定义中文名称的函数或操作符(如`平方`代替`square`)。网页2提到的南湖计算机支持中文命令输入,可能允许部分中文交互。
2. **实际应用限制**  
   - **系统兼容性**:需确认金湖X51编译器和WD-Forth环境是否支持Unicode或中文字符集。传统Forth系统多基于ASCII字符,若需中文编程,可能需要定制化修改或依赖特定平台(如南湖计算机的中文界面支持)。
   - **示例与实践**:搜索结果中未明确提及中文代码案例,建议参考南湖计算机的文档或社区资源,确认是否提供中文编程示例或工具支持。
### 三、开发与调试建议
1. **嵌入式开发场景**  
   - 针对8051单片机开发,需加载对应的X51模块,并熟悉Forth与汇编语言的混合编程(参考网页2提到的虚拟CPU和哈佛架构设计)。
   - 调试时可利用堆栈状态实时显示功能(类似`.S`命令),或通过南山计算器观察执行过程。
2. **跨平台与工具链**  
   - 若需在Linux环境下开发,可参考网页3IsForth配置方法(如依赖库安装、环境变量设置等)。
   - 代码编辑可使用Vim等工具(参考网页4DOS环境Vim操作),编译流程可类比FortranC语言的命令行编译方式(网页5-6)。
### 四、进一步学习资源
1. **官方文档与社区**  
   建议通过“南湖计算机”官网或相关开发者社区获取WD-Forth的详细手册,尤其是针对X51模块的特定指令集和硬件接口说明。
2. **代码示例与项目实践**  
   - 参考网页3IsForth示例(如斐波那契数列实现),结合8051硬件特性调整代码。
   - 探索南湖计算机的“金水明_X51开发系统”模块,尝试编写控制程序并加载到虚拟或真实硬件中运行。
---
综上,“金湖X51 Forth编译器与WD-Forth”的教程可结合通用Foth资料和南湖计算机的特定功能学习,中文编程需依赖系统支持,建议通过实践验证具体实现。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-30 09:46:51

0

主题

23

回帖

248

积分

中级会员

积分
248
发表于 2025-4-9 10:51:27 | 显示全部楼层
能做一期金湖X51 Forth编译器软件的使用教程吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-30 09:46:51

0

主题

23

回帖

248

积分

中级会员

积分
248
发表于 2025-4-22 10:45:31 | 显示全部楼层
shuan*** 发表于 2025-4-1 15:27
有使用教程吗?可以中文代码编程吗

金蝶X51的使用教程有吗?做了那么多工具没使用教程也不会用呀
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-29 08:51:26

4

主题

75

回帖

869

积分

荣誉版主

积分
869
发表于 前天 08:51 | 显示全部楼层
搞半天,原来用的还是外国人的编译代码,核心还是外国的,换汤不换药

点评

满屏的中国字,你从哪里看出是外国人的?  详情 回复 发表于 昨天 08:45
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 昨天 08:45 | 显示全部楼层
lijun*** 发表于 2025-4-29 08:51
搞半天,原来用的还是外国人的编译代码,核心还是外国的,换汤不换药

满屏的中国字,你从哪里看出是外国人的?
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 17:44 , Processed in 0.122885 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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