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

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

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

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

当跨越一个操作系统时一个可以生成的编译器就会在另外一个系统中难以生成,或者会出现很多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




分享给朋友:

相关文章

多普勒音速偏移演示计算器。

多普勒音速偏移演示计算器。

多普勒偏移计算器,应用与雷达测距计算。链接:https://pan.baidu.com/s/1i4FkchZ  密码: mq7x...

快速傅里叶易语言算法。

雷达滤波需要快速傅里叶公式计算波形。    工程中待处理的信号,通常具有非周期性,故我们需要对离散傅里叶变换进行研究。离散公式:【x(n)是采样的时域信号,X(k)是对于...

linux 下的《仙剑奇侠传》

linux 下的《仙剑奇侠传》

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

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

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

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

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

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

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

谈谈引导程序的想法。

谈谈引导程序的想法。

当个人电脑一出现就有了磁盘系统,不管是软盘,光盘,硬盘,计算机要应用操作系统就要引导,引导程序一段代码。这引导代码很小,在第一个磁盘的扇区上,平时没什么人注意它。这段代码损坏一个字节,都会造成计算机瘫...