编译器介绍——OpenWatCOM

编译器介绍--OpenWatCOM

前言

    对于16位程序的开发或许各位并不陌生。但是,随着Win32,Linux,BSD等32位操作系统的广泛应用,我想各位一定觉得:现在还有谁会用16位的开发呢?不过,你要知道,其实现在很多地方都可以有16位的开发。不但如此,因为16位的指令简洁,并没有32位的那么复杂。所以,对16位的研究就是为32位打基础。所以,即使现在32位的程序,系统广泛的应用,即使64位的系统正在陆续推出,16位仍然是不能不了解的硬件平台。

    曾经看过一本上海高中学生的计算机教材,上面使用的C语言编译器是Turbo C。起先,我个人觉得很奇怪,后来才了解。原来,国内很多地方的计算机教程都是使用Turbo C作为教C语言的编译环境的。但是,Turbo C毕竟是Borland公司的产品,虽然现在你可以免费使用。但是相对来说,Turbo C已经不被Borland更新了。而且,网上很多的Turbo C的下载都不完全。

    在看了FreeDOS的内核后发现,原来他们的内核的编译器用的是OpenWatCOM(虽然他也可以用Turbo C,MS C编译,但是他们推荐的是OpenWatCOM。网上下载的编译完成的内核也是OpenWatCOM编译的),所以我也就接触了一下OpenWatCOM。感觉还不错,所以在此向各位看官介绍一下。

下载,安装和设置

    在盗版充斥着这个中国市场的时候,我们不得不做一个选择,购买正版,还是盗版。其实,对于前者就现在的国民收入那是不太现实的(指购买全套的开发软件)。而后者随着反盗版程序的日益先进,盗版软件也变的四处碰壁,更何况使用盗版开发工具开发出来的程序是合法的么?所以,我个人还是比较喜欢GNU和OpenSource的东西。


    OpenWatCOM是一个OpenSource的工具,你可以从网上免费获得其二进制程序和源代码。并且,她也可以支持至少以下几个系统平台:DOS,Win16,Win32,OS/2。你可以从ftp://ftp.openwatcom.org/watcom/zips/ 获得最新的版本。由于,32位的开发工具现在到处都可以找到,像MinGW就是不错的开发工具。所以我们就只把OpenWatCOM作为16位开发工具吧。

    你可以从上面那个FTP站点下载如下zip文件。

cm_core_all     - Core binaries (All hosts)
cm_core_dos     - Core binaries (DOS host)
cm_core_doswin  - Core binaries (DOS & Win hosts)
cm_clib_hdr     - C runtime library header files
cm_clib_a16     - C runtime libraries (16-bit all targets)
cm_clib_d16     - C runtime libraries (16-bit DOS)
clib_a16        - C runtime libraries (16-bit all targets)
clib_d16        - C runtime libraries (16-bit DOS)
core_doswin     - Core binaries (DOS & Win16 hosts)
c_doswin        - C compiler (DOS & Win16 hosts)
ext_dos4gw      - DOS/4GW DOS extender

    当然,其中有些文件如果你觉得不需要,也可以不下载。这完全取决于你自己。


    当一切都下载好后,我们就要开始安装了。其实也很简单,你只要将这些ZIP文件中的文件复制到一个指定的目录中就可以了(这样的话就不用修改注册表了,也不会有无聊的垃圾文件)。当然,其中有一个文件 license.txt 会重复出现,你可以对其履盖也可以不复制,因为他们的内容都是一样的。现在我们假设你复制在 (OpenWatCOM) 处(这里是一个替代符,为了便于我后面告诉你如何设置)。


    编译器的设置确实挺让人心烦的。我们要为OpenWatCOM设置如下几个环境变量,WATCOM,Path,INCLUDE,LIB。你可以通过 我的电脑->属性->高级->环境变量来设置。
    添加或者修改如下变量。

WATCOM=(OpenWatCOM)
Path=%Path%;%WATCOM%/binw
INCLUDE=%WATCOM%/H
LIB=%WATCOM%/lib286;%WATCOM%/lib286/dos

注意,上面的(OpenWatCOM)是你OpenWatCOM的安装目录。另外,%Path%是指你原来Path变量的内容。


    好了,直到现在你的WatCOM算是真正安装好了。现在你可以使用终端来看一下。在终端中输入 wcl 或者 wcc 可以获得一些帮助信息和版本信息。不过,wcl只是傀儡,真正有用的还是wcc。


编译程序

    我们先来编译一个C文件吧。我们先生成一个如下的C文件。

//main.c
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  printf("Hello World!/n");
  return(0);
}

//main.c end

然后我们就用如下命令编译。

wcl main.c

我们就可以在main.c的目录中找到一个名位main.exe的程序。是不是和Turbo C的生成方式很像?

    然后我们再来编译一下汇编和C结合的文件吧。不过,这里我使用的是NASM,你可以从网上免费获得,只要复制到binw目录中就可以了。(她只有两个小文件)。
    我们生成如下的文件

;my.asm

global myfunction_
myfunction_:
        mov ax,0x16
        ret

;my.asm end

注意,这里和别的C语言有些不同,因为她的那个_是加载函数名后面。

好了,我们现在修改一下main.c

//main.c
#include <stdio.h>
#include <stdlib.h>

int myfunction(void);

int main(int argc, char *argv[])
{
  printf("myfunction : %d/n",myfunction());
  return(0);
}

//main.c end

如下编译

wcl -c main.c
nasm -f obj my.asm -o my.obj
wcl main.obj my.obj

编译完成后你就可以在目录中找到一个名位 main.exe的程序。运行她后,就会有如下显示。

myfunction : 22

    是不是很棒?

    其实还有更多的功能等你去发掘呢。如果你真的因此喜欢上16位开发,那么我推荐一个操作系统--FreeDOS。这个嘛,个人喜好。如果你像让你的程序在没有安装系统的机器上运行,FreeDOS绝对比MS-DOS来的自由。

    本人就介绍到这里,希望各位如何有任何意见,问题都可以在 http://blog.csdn.net/visioncat/ 上面提出。如果您想转载我的文章或者引用我的文章,请您,当然也不是必须的,在 http://blog.csdn.net/visioncat/ 上告诉我一声。当然,这些文章你可以全篇自由复制。

    我的格言:不论是程序还是思想,唯有在不断的交流下才能愈加完善。


北斗星君(黄庠魁)
二〇〇五年六月二十日

各位注意,根据某人所犯错误。让我觉得应该提醒各位。请使用 16位的 NASM编译汇编程序。因为WatCOM是16位编译器,如果用32位的NASM编译,会不出现问题。请使用16位NASM(即在DOS下运行的NASM)。谢谢


Open Watcom manual 1.5.zip 官方PDF文档,已经添加目录标签,包含内容: cguide.pdf Open Watcom C/C++ User’s Guide cguideq.pdf Open Watcom C/C++ Compiler and Tools User’s Guide for QNX 3rd Edition clib.pdf Watcom C Library Reference Volume 1 clr.pdf Open Watcom C Language Reference cpplib.pdf Open Watcom C++ Class Library Reference cw.pdf Open Watcom CauseWay User’s Guide lguide.pdf Open Watcom Linker User’s Guide First Edition pguide.pdf Open Watcom C/C++ Programmer’s Guide tools.pdf Open Watcom C/C++ Tools User’s Guide First Edition wd.pdf Open Watcom Debugger User’s Guide vi.pdf Open Watcom Vi Editor Reference and User’s Guide Watcom使用简明 在Watcom安装目录下有三个程序目录 binnt/binp/binw,对应了 Windows NT/XP、OS2、MSDOS 和 Windows 3.x/9x等系统。当前系统为 Windows 7,使用 binnt 目录下的命令工具,各工具介绍: batserv.exe Batch Server wcc.exe C16 Optimizing Compiler cl.exe C/C++ CL Clone for 386 wcc386.exe C32 Optimizing Compiler ctags.exe CTAGS Utility wcl.exe C/C++16 Compile and Link Utility cvpack.exe CV4 Symbolic Compactor wcl386.exe C/C++32 Compile and Link Utility cvtres.exe C/C++ CVTRES Clone for 386 wd.exe Debugger dbginst.exe Debuger Driver Install wddespy.exe DDE Spy for Windows NT dmpobj.exe OMF Dump Utility wde.exe Dialog Editor for Windows NT drwatcom.exe Dr. Watcom for Windows NT wdis.exe Multi-processor Disassembler fcenable.exe Far Call Optimization Enabling wdw.exe Watcom Debuger ide.exe IDE wfc.exe FORTRAN 77/16 Optimizing Compiler lib.exe C/C++ LIB Clone for 386 wfc386.exe FORTRAN 77/32 Optimizing Compiler lib386.exe C/C++ LIB Clone for 386 wfl.exe F77/16 Compile and Link Utility link.exe C/C++ LINK Clone for 386 wfl386.exe F77/32 Compile and Link Utility link386.exe C/C++ LINK Clone for
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值