DJGPP

DJGPP
The DJGPP environment, utilizing GCC
The DJGPP environment, utilizing GCC
開發者DJ Delorie
当前版本
  • 2.05(2015年11月3日)[1]
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
操作系统DOS and Windows
类型Compiler
许可协议GNU GPL
网站www.delorie.com/djgpp

DJ的GNU编程平台DJGPP[2]Intel 80386及以上的一個软件开发套件,支持DOS操作系统的IBM PC兼容机 。它由DJ Delorie指导並于1989年开始这个项目。 它是GNU编译器集合 (GCC)的一个移植 ,主要是GNU实用程序,如Bashfindtarls ,GAWKsedldDOS保护模式介面英语DOS Protected Mode Interface(DPMI)。 支持的语言包括CC ++,Objective-C/ C ++,AdaFortranPascal。DJGPP在2004年被描述为過時产品。[3]

编译器生成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。 [3] 终止和驻留 (TSR)程序来支持普通DOSWindows NT 4下的LFN。

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

參見

参考资料

  1. ^ https://groups.google.com/forum/#!topic/comp.os.msdos.djgpp/srgUBVOMGmI.
  2. ^ Eli Zaretskii. The DJGPP Project. Jul 1999 [20 Jul 2009]. (原始内容存档于2019-05-08). 
  3. ^ 3.0 3.1 Wall, Kurt; Von Hagen, William. The Definitive Guide to GCC. Apress. 2004: 47–48 [2019-08-15]. (原始内容存档于2017-03-30). Another popular, though aging, GCC-based development system is DJGPP, D.J.[sic] Delorie's free 32-bit development environment for DOS systems. 
  4. ^ Guide: What is DJGPP?. [November 22, 2015]. (原始内容存档于2019-08-15). The target hardware platform for DJGPP programs is a PC platform ... running DOS ... or a DOS-compatible operating system DJGPP programs run under Windows' "dos prompt" boxes. 
  5. ^ Microsoft. List of limitations in 64-Bit Windows. Oct 2007 [18 May 2010]. (原始内容存档于2015-01-16). 16-bit MS-DOS and Microsoft Windows 3.x utilities will not start. If you attempt to start such a program, you receive a "Program.exe is not a valid Win32 application" error message. 

外部链接