找回密码
 立即注册
查看: 322|回复: 1

F351(7):倚天剑 Forth交叉编译器(DOS环境)

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-11-27 19:07:03 | 显示全部楼层 |阅读模式
一、启动编译器
1)倚天剑 Forth 8051单片机 交叉编译器软件(YTJ-XCC51 V2.1)是由“我的Forth(以下简称WDForth)”、“交叉编译器”和“8051汇编语言编译器”三个部分组成,这三个部分已经集成在名为“YTJ_F051.COM”的DOS可执行程序中了。
2)倚天剑XCC51编译器的设计目标是对PC机上的STC单片机的Forth 8051程序进行编译,形成二进制的内存机器码映像,然后再生成HEX格式文件供STC-ISP软件烧录到目标单片机中运行,控制单片机实现各种功能。
3)由于“YTJ_F051.COM”的文件尺寸大于64KB,因此需要用MS-DOS 2.0版的多段加载程序“LOAD.COM”来加载执行。
4)用户只要双击批处理文件“YTJ_XCC51_V21.BAT”就可以启动倚天剑 Forth 8051单片机 交叉编译器软件(以下简称“倚天剑XCC51”),进入Forth8051交叉编译的DOS界面环境了。
该批处理文件的内容为“LOAD.COM YTJ_F051.COM”。
5)如果用户有兴趣查看“YTJ_F051.COM”的代码,可以启动DOS环境的DEBUG程序。用户只要双击批处理文件“DEBUG_YTJ_XCC51_V21.BAT”即可。该文件的内容为“DEBUG LOAD.COMYTJ_F051.COM
6)倚天剑XCC51启动后的界面如下图:
Fig01_启动界面.jpg
7)在倚天剑XCC51环境中手工输入Forth命令。
DOS窗口出现“JL>”的命令行提示符后,用户就可以手动输入Forth命令或者程序,输入以回车键为结束符,Forth系统就开始解释执行命令或者程序。
比如在Forth中计算表达式“1+2*3”并显示结果的Forth程序为“1  2 3  *  +  .<回车>”,在DOS命令窗口键入并执行这段的程序的结果为:
Fig02_四则运算命令.jpg
8)一般的数学公式和计算高级语言采用中间波兰表达形式:操作符在操作室中间(1+2),而Forth语言采用逆波兰的表达形式:操作符在操作数后面( 1  2  + ),并且采用空格作为Forth字之间的分隔符,LISP语言采用前缀波兰表达形式( (+  1  2) )。

二、加载与编译Forth程序
9Forth程序行像英文句子一样,由一个个“Forth字”组成,字与字之间由空格分隔,以回车作为结束。Forth字也称“Forth命令”,可以从键盘上输入,也可以写在程序文件中作为程序输入。
WDForth程序文件是纯文本文件,一般用“.J”为后缀来区分,可以用任何文本编辑器编辑。
WDForth程序文件用“TF_LOAD”命令来加载,命令的格式为“TF_LOAD  文件名”。

10)倚天剑XCC51随编译器提供了一个求平均值得Forth程序“YTJ_DEMO.J”,进入Forth环境后,使用命令“TF-LOAD  YTJ_DEMO.J<回车>”就可以编译执行改范例程序了,像下图那样:
Fig03_Forth程序.jpg
程序“YTJ_DEMO.J”定义了一个求平均值的Forth字“AV”,以后只要按照要求的格式输入N个数,就可以求出这N个数的平均值并显示出来了。
如上图输入“11 22 33-44 4 AV<回车>”之后,就显示出“11,22,33, -44 ”这4个数的平均值为“5”来了。
11Forth程序以精确无歧义和精简著称,“YTJ_DEMO.J”程序中求平均值的Forth字的定义只有一行:
: AV DUP >S 0 SWAP 1 1 for + endfor S> / . ;
总共15个单词,是世界上最短的求平均值计算机程序,没有之一。
12)倚天剑XCC51的设计目的是对PC机上的STC单片机的Forth 8051程序进行编译,然后生成HEX格式文件供STC-ISP软件烧录到目标单片机上,控制单片机实现各种功能。
13)倚天剑XCC51随编译器提供了一个最简单的STC打狗棒开发板上运行的“点亮LED灯” 程序,范例程序的文件名为“X51_DEMO.J”。手动输入“TF_LOAD X51_DEMO.J<回车>”命令后,系统显示OK或者退出,就表明编译成功了,如下图所示。
Fig04_X51命令.jpg
这时就可以看到倚天剑XCC51根据范例程序生成的“X51_DEMO.HEX”烧录文件了。烧录到STC打狗棒开发板后就可以看到连接到P2端口的LED灯隔一个亮一个了。
14)下图是范例程序“X51_DEMO.J”的内容:
Fig06_X51程序.jpg
使用倚天剑的8051程序一般分为5个部分:
1行到第5行的初始化部分设置倚天剑XCC51编译器。
7行到第9行定义P2端口的模式寄存器。逗号不是Forth语言里的分词符,所以可以作为Forth词名字的一部分。本程序加上逗号,使其在程序里看起来像8051汇编语言的左操作数。
另外像P2这些最老的8051单片机的SFR寄存器,已经在Forth 8051 汇编语言中定义过了,用户就不用自己再定义了。
11行到第22行是对STC单片机的设置,为控制程序的运行建立起运行的环境。
25行到第31行是单片机控制程序的主循环部分,其中第28行将连接在P2端口上的LED灯隔一个亮一个。
用户可以修改这行程序中的055数字,实现自己的灯亮花样。
最后一部分第34行程序是将已经生成的机器码输出为HEX格式的烧录文件。其中Forth字“YTJ_HexOut”是烧录命令,其前面的数字是从地址0000开始输出的字节数,其后面的HEX文件的文件名。

三、结束语
15)倚天剑XCC51编译器有许多新颖的特点,但与常规编译器最大的不同点是厂商可以自己为某款8051单片机或者开发板定制专用的编译器,将该款单片机和开发板上的许多设备的驱动程序都内含在编译器里,成为某个或某类产品的“专属编译器”,大大方便终端用户的程序开发。本系列文章将以此介绍如何DIY自己的编译器
16)虽然本文只有最简单的两个范例程序“YTJ_DEMO.J”和“X51_DEMO.”,但如果你实验成功了,就表示你已经有了新的一款开发STC8051单片机软件工具了,你就可以开始使用C语言和汇编语言外的第三种计算机语言来编写STC单片机程序了,你就可以开始探索你的“DIY自己的编译器”的路了。

附件:DOS_倚天剑XCC51系统.rar (936.97 KB, 下载次数: 28)


1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-11-27 19:16:37 | 显示全部楼层
本帖最后由 杨为民 于 2024-11-27 19:48 编辑

补充说明:
(1)这是去年发表的文章,当时还没有这个论坛。
(2)YTJ_F051.COM”虽然只是一个DOS程序,却已经是一个完整的Forth系统了:
1)它使用DOS命令窗口与用户交流,可以执行很多命令了,所以它像“SHELL”的一样是一个命令环境。
2)它可以由用户指定一个DOS文件名,然后对该文件中的Forth程序进行“编译”,所以它是一个“编译器”。
3)如果被编译的文件是Forth 8051汇编语言程序,它会编译并生成一个HEX格式烧录文件,供用户烧录到STC单片机运行。所以它是一个“8051交叉编译器”。
4)如果被编译的文件是Forth语言程序文件,则它会解释执行这个程序,就像上面的举的求均值的程序例子。

5)如果被编译的文件是Forth 8086汇编语言程序,它会编译并生成一个“DOS环境下可执行的COM文件”,用户双击该文件名就可以执行它。所以它是也一个“8086-DOS程序编译器”。

(3)YTJ_F051.COM”虽然只是一个DOS程序,却已经在内部集成了“DOS 2.0”文件系统了,用户可以用Forth命令或者Forth程序来:
1)建立新文件
2)打开现有文件
3)以文本或者二进制的方式读取文件

4)以文本或者二进制的方式写文件

5)改变当前目录
6)列出文件列表到DOS窗口上
7)...

(4)YTJ_F051.COM”是一个DOS程序,如果不从Windows执行,直接从软盘或者U盘上的DOS环境执行,则可以用INT 13直接读写硬盘上的所有扇区数据,是极客的好工具。














回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 20:05 , Processed in 0.168781 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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