- DJGPP
-
DJGPP
The DJGPP environment, utilizing GCCDeveloper(s) DJ Delorie Stable release 2.0.3p2 / June 10, 2002 Operating system DOS and Windows Type Compiler License GNU GPL Website http://www.delorie.com/djgpp/ DJGPP (DJ's GNU Programming Platform)[1] is a development suite for 386+ IBM PC compatibles which supports DOS-enabled operating systems. It is guided by DJ Delorie, who began the project in 1989. It is a port of the popular GCC compiler, as well as mostly GNU utilities such as bash, find, tar, ls, awk, sed, and ld to DPMI. Languages available include C, C++, Objective-C/C++, Ada, Fortran, and Pascal.
The compiler generates 32-bit code, which runs natively in 32-bit protected mode while switching back to 16-bit DOS calls for basic OS support. However, unlike OpenWatcom, it is not a zero-based flat model due to preferring NULL pointer protection for better stability. It is currently based upon a variant of the COFF format. It can access up to 4 GB of RAM in pure DOS when using a suitable DPMI host (e.g. CWSDPMI r7 or HDPMI32).
Most notably the original Quake for DOS was compiled with DJGPP, as well as other programs[2] such as GNU Emacs, p7zip, Vim, beye, UPX, NASM, THE, Dungeon Crawl, NetHack, Perl, Python, and auxiliary applications within Arachne.
Contents
Compatibility
DJGPP presents the programmer an interface which is compatible with the ANSI C and C99 standards, unofficial DOS standards, and an older POSIX Unix standard. Compiled binaries are long file name-aware and handle such filenames under Win32 by default. TSRs to support LFNs under Windows NT 4 or pure DOS are available. As of July 2011, the newest GCC supported by DJGPP is 4.6.1, providing under DOS the standards C99/1x, C++98/11, as well as the first release of support for Ada2012.
While DJGPP runs in 32-bit protected mode, its stub and library heavily rely upon many 16-bit DOS and BIOS calls. Because the x86-64 versions of Windows lack support for 16-bit programs,[3] there is no NTVDM, and DJGPP apps cannot be run. Under x86-64 systems these apps only function through emulation (e.g. DOSBox), virtualization (e.g. VirtualBox), or similar (e.g. Linux's DOSEMU). This problem arises because x86-64 processors in long mode do not support the virtual 8086 mode used to run 16-bit code in IA-32 processors.
See also
- MOSS - "Mach on DOS" - a POSIX DOS extender, supported by GCC 2.7 through 3.3.6
- EMX/RSX - a POSIX implementation for OS/2 and DOS
- Cygwin - a Linux API compatibility layer with many ported libraries and applications
- MinGW - a native port of the GNU toolchain for Windows, designed to require minimal runtime support
- GnuWin32
References
- ^ Eli Zaretskii (Jul-1999). "The DJGPP Project". http://www.delorie.com/djgpp/doc/eli-m17n99.html#History. Retrieved 20-Jul-2009.
- ^ The history of djgpp
- ^ Microsoft (Oct-2007). "List of limitations in 64-Bit Windows". http://support.microsoft.com/kb/282423. Retrieved 18-May-2010.
External links
Unofficial or unfinished ports
- DJGPP 2.04 Beta 1 Release webpage (archived)
- final RHIDE snapshot (discontinued)
- unofficial ELF support (GCC 4.0.1, BinUtils 2.16)
- [1] ntlfn08[bs].zip, LFN API emulation for NT 4
- DOSLFN 0.40e LFNs via direct disk access
- StarLFN 0.32 LFNs via filelists
Categories:- C compilers
- DOS extenders
- Free compilers and interpreters
- Open-source integrated development environments
Wikimedia Foundation. 2010.