当前位置:首页 > 我的程序 > 正文内容

用watcom-c编译器交叉编译CL386 V1.0源码。(起始编译另一个编译器)

Peirre4年前 (2022-10-01)我的程序438

说起来编译器的生成是一个编译器生成另外一个编译器反复改进和更新得来的。

当跨越一个操作系统时一个可以生成的编译器就会在另外一个系统中难以生成,或者会出现很多BUG了。

其中原因是操作系统的文件名表示,目录表示,时钟表示,这些,以及其它的操作系统规范和硬件结构,存储结构的引响。

还有关于各种CPU的通用指令和特别指令。我的AMD CPU 能编译 C 传统的编译器,是建立在传统指令上的,所以这方面可以忽视。

最主要的就是系统的编译认可和系统的转换。同一个C语言编译系统,在不同的操作系统中它的宏定义和一些特别函数一样在标准头文件和库中有分支。

我用windows 10 + DOSBOX-X的环境编译 CL386 C语言最早的一个版本1.0,只是一个C语言编译器进化的一个实验。就是说可以把原始的C编译器应用到最先进的操作系统windows 10的环境中来。

当然不得不提一下DOSBOX-X,它的环境和以前的DOSBOX系列模拟器的环境不同,最少可以识别32位环境而少错。

我的编译器是基于watcom版权的免费的,也可以说是共享的版权,在DOSBOX常规环境中,用 watcom-c-dos 1.9和 watcom-c-dos 2.0这两个编译器环境是不好安装的。使用DOSBOX-X环境就顺利安装通过了。当然以前的DOSBOX某个版本也可以安装,硬盘中预留,也没太大的问题。

这是官方的打包编译没完全生成好的原因。得到可以顺利安装的版本要有一定的运气。

CL386编译器的源码在watcomc中是可以编译的还有一个另外的编译器是bcc 3.1版本。只有这两种编译器可以生成这个编译器。

CL386是基于DOS环境的,所以可以用DOS下的早期watcomc编译器生成。但是在windows 的 命令窗口下执行,会有一定的难度。

原因是生成的EXE的起动代码的环境配置代码是不一样的。没有其它原因,再就是C编译器对系统的识别。早期的watcomc编译器在DOS中是没有问题 的。

感谢DOSBOX-X,加了很多特点,充实和独立了DOS的模拟环境,字体也变美了。

我们要在CL386的目录下写入两种不同环境的watcomc编译器的执行环境,一个是CMD环境中的启动,一个是DOSBOX-X的启动。当然安装好watcomc后,各个版本的DOSBOX是一样用的,没什么问题。现在的DOSBox ECE r4881也可以试一下。

主文件CL386.C 编译器生成在DOS模拟器中生成是没问题的,还有一些辅助文件的生成都没问题。

有些文件是M68中的,因为是DOS环境,那用于摩托罗拉68K这个处理器的环境文件是生成不了的,因为是交叉,可以生成目标文件。这个注意一下。

DOS模拟器和CMD环境中没有别的冲突,就是<stdio.h>中的一个指针冲突,实际点就是目录名称的结构不同。有这些结构,所以有的文件只能在DOSBOX-X中生成,可以这样说,DOSBOX-X中生成的可以在CMD环境下通用。这一点是十分优秀的。其它的只能在DOS模拟器的环境下使用或者会产生编译器系统识别错误。

还有一个watcomc编译器的内联汇编问题有的编译器的汇编内联是asm{开头,有的是_asm{开头,多了一个“_"短下划线,注意一下。

4.jpg

这个一般性错误是没有安装watcomc 64位版的编译环境产生的,安装64位版本后没有这个问题。可以兼容DOS版。这个watcomc64位编译比较难找。个人认为会有一些杂项问题,不建议使用,复杂的程序纠错很麻烦,所以还是建议使用32位版本的。以后就不知道了,速度很快很好用,因为研究的是DOS程序,

现在发一些图片会很乱。不同的系统的错误不太一样,所以不如身临其境,好好体会。看实际操作环境也是没有用的。一些东西不实操难以理解。

有什么事情问我。我的微信号: Y.Pierre QQ:7535794 欢迎讨论。

下载实验性c编译器源码:https://pan.baidu.com/s/1fagDI1S7W3u7F2mBuw4saA?pwd=5n2t




分享给朋友:

相关文章

黑洞数的演示程序。

黑洞数的演示程序。易语言改编,小演示。没多大意思。只是测试一下易语言的扩展功能,有同好者欢迎交流。这个网站没做SEO。也许等你们太久,但是属于个人网页,展示一下。在网上留个脚印。下载地址:黑洞数的演示...

关于 Cannot enable. Maybe the USB cable is bad? 这个问题。

关于 Cannot enable. Maybe the USB cable is bad? 这个问题。

经常摆弄电脑,那USB接口也是插进,拔出多少次。有一天发生了这个问题,什么问题呢?见图:只要是linux 新内核,都会出现这个问题,虚拟机USB功能,DOSBOX等USB功能不可识别。在网上查看了一些...

linux 下的汉字输入法.

linux 下的汉字输入法.

各位老师,才子,同事们好!有很多初级玩linux的同学都会碰到一个难题,也就是在linux 下的汉字输入法.这个问题一直困绕了linux 使用者多年.我还好,每次都使用正常.现在说说心得笔记就可以了....

linux 下的《仙剑奇侠传》

linux 下的《仙剑奇侠传》

以前的DOS游戏《仙剑奇侠传》是炙制人口的一个很容易上手的游戏。这个游戏流行了很多年。很多人在玩过多年以后,重温旧梦,回味游戏之中的情感。这个游戏再版了很多次了。现在linux 下也可以直接玩这个游戏...

USB设备的插入机制与USB驱动故障。

USB设备的插入机制与USB驱动故障。

USB主机检测设备,首先在USB集线器的每个端口的D+,D-上,分别接了一个15K欧姆的下拉电阻到地。集线器端口为空时,被这两个电阻拉低了电平。在USB设备端,D+或者D- 上接了上拉1.5K电阻。全...

关于编译器不愿意说的那些事。

关于编译器不愿意说的那些事。

计算机发展了好多年。当中也不泛有很多对程序的爱好。很多人不是专业水平,也不是在算法类中特别出众,就是喜欢而已。好像认为自己就只那个水平,或者为一些调试不通过发愁。可以说,实际上都不是你的错,是编译器的...