DJGPP

DJ的GNU编程平台 （ DJGPP ） 是Intel 80386及以上的一個软件开发套件，支持DOS操作系统的IBM PC兼容机 。它由DJ Delorie指导並于1989年开始这个项目。 它是GNU编译器集合 （GCC）的一个移植 ，主要是GNU实用程序，如Bash ，find ，tar ，ls ，GAWK ，sed和ld到（DPMI）。 支持的语言包括C ，C ++,Objective-C/ C ++，Ada，Fortran和Pascal。DJGPP在2004年被描述为過時产品。

编译器生成32位代码，该代码在32位保护模式下本机运行，同时切换回16位DOS调用以获得基本操作系统支持。 但是，与Open Watcom C / C ++编译器不同 ，其並非從零開始的平面模型，因为它更喜欢使用NULL指针保护以获得更好的稳定性。 它目前基于COFF格式的变体。 当使用合适的DPMI主机（例如， CWSDPMI r7或HDPMI32）时，它可以在纯DOS中访问高达4 GB的RAM。

兼容性 
DJGPP为程序员提供了一个与ANSI C和C99标准兼容的接口，DOS API以及类似POSIX的旧环境。 编译的二进制文件是长文件名 （LFN）识别的，默认情况下可以在大多数32位Windows下处理这些名称，但是它们不能使用Windows上的图形程序所需的Win16或Win32 API。  终止和驻留 （TSR）程序来支持普通DOS或Windows NT 4下的LFN。

虽然DJGPP在32位保护模式下运行 ，但它的存根和库很大程度上依赖于许多16位DOS和BIOS调用。 因为x86-64版本的Windows支持16位程序， 没有NTVDM ，并且无法运行DJGPP应用程序。 在x86-64系统下，这些应用程序仅通过仿真运行（例如 DOSBox ）， x86虚拟化 （例如 VirtualBox ）或类似的（例如 Linux的DOSEMU ）。 出现此问题是因为在长模式 x86-64处理器不支持用于在IA-32处理器中运行16位代码的虚拟8086模式 。 带有VT-x的较新的x86 CPU确实支持分页实模式和不受限制的访客模式执行。

參見 

 FreeDOS 
 Cygwin 
 
 
 MinGW
 開源Watcom C / C ++编译器
 Allegro

参考资料

外部链接 
 

自由整合開發環境
自由編譯器與直譯器
C編譯器
1989年软件