繁体   English   中英

如何将c / c ++编译为ms-dos .com程序?

[英]How to compile c/c++ to ms-dos .com programs?

我在GNU GCC编译器中使用Code :: Blocks。 我的问题是:有什么方法可以将c / c ++代码编译为ms-dos 16bit(.com)可执行格式?
我试图设置构建选项并在网上搜索编译器参数,但找不到任何东西。

您当然可以将C和/或C ++(一种古老的方言)编译为16位MS-DOS .com文件。 您使用Code :: Blocks拥有的编译器/链接器几乎可以肯定不能这样做。

特别是,至少就我所知,gcc从未尝试过为16位分段内存环境生成代码。 gcc至少有一个端口连接到DOS扩展程序( DJGPP ,但它生成.exe文件而不是.com,并且它使用专有的DOS扩展程序以及版本的gcc)。

如果确实需要生成.com文件,则有很多选择,但是所有编译器都相当老,因此,特别是对于C ++,它们接受的语言非常有限。

针对MS-DOS的工具链。

警告:如前所述,所有这些都非常古老。 一般来说,他们接受的C是相当符合标准的C89,但仅适用于相当小的程序(就代码和数据大小而言,这是必不可少的:.com文件基本上限于合计64 KB的数据和代码)。 在C ++他们接受和任何东西,甚至有点接近现代之间的差异是深刻得多(例如,一些根本不支持模板)。 这里所有提到的一致性都是相对于当时的其他编译器而言的。 按照现代标准,它们的一致性始终很糟糕。

  1. 微软:在相当短的时间内只出售了用于MS-DOS的C ++编译器-它们进入市场的时间有些晚,然后转移到了相当早就只生成32位Windows可执行文件的编译器。 除了语言一致性以外,更多关于优化的知识。
  2. Borland:Microsoft的镜像。 更好的一致性,较差的优化,可能是最后一个放弃MS-DOS市场的方法。 他们最近的MS-DOS编译器甚至支持C ++模板(当时还很新)。
  3. Watcom:为数不多的仍可免费下载但没有商业支持的软件之一。 当它是新产品时,通常被认为是一致性和优化方面最好的方法之一。
  4. 元软件:当时相当昂贵的选择。 我从未使用过它,但是我尊敬的一些人高度认为它是您可以获得的最佳编译器。 主要针对嵌入式系统。
  5. Datalight / Zortech / Symantec / Digital Mars:另一种仍在正式提供中 有少量但非常忠诚的追随者。 我试了一段时间,但没有找到一个令人信服的理由来使它比其他人更喜欢。

那时也有很多,但是这些可能占当时市场的90%以上。

您正在寻找的是exe2bin。 这是DOS附带的实用程序,用于将.EXE格式的对象代码转换为.COM格式(一个64K段中的代码和数据)。 它与DOS和一些编译器/汇编器一起提供。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM