DJGPP


La plataforma de programación GNU de DJ ( DJGPP ) [2] es un paquete de desarrollo de software para Intel 80386 de nivel y superior, compatible con IBM PC que admite sistemas operativos DOS . Está guiado por DJ Delorie, quien comenzó el proyecto en 1989. Es un puerto de GNU Compiler Collection (GCC) y, en su mayoría , utilidades de GNU como Bash , find , tar , ls , G AWK , sed y ld para DOS . Interfaz de modo protegido (DPMI). Los idiomas soportados incluyenC , C++ , Objective-C /C++, Ada , Fortran y Pascal .

El compilador genera código de 32 bits, que se ejecuta de forma nativa en modo protegido de 32 bits mientras vuelve a las llamadas de DOS de 16 bits para soporte básico del sistema operativo. Sin embargo, a diferencia del compilador Open Watcom C/C++ , no es un modelo plano basado en cero debido a que prefiere la protección de puntero NULL para una mejor estabilidad. Actualmente se basa en una variante del formato COFF . Puede acceder a hasta 4 GB de RAM en DOS puro cuando se utiliza un host DPMI adecuado (p. ej., CWSDPMI r7 o HDPMI32).

También es posible utilizar DJGPP para realizar compilaciones cruzadas de software en DOS, por ejemplo, en UNIX/Linux. Tanto las bibliotecas DJGPP como los programas se pueden compilar de esta manera, vincular y luego implementar en máquinas con DOS o emuladores de DOS.

DJGPP presenta al programador una interfaz que es compatible con los estándares ANSI C y C99 , las API de DOS y un entorno similar a POSIX más antiguo . Los binarios compilados son conscientes de los nombres de archivo largos (LFN) y pueden manejar dichos nombres en la mayoría de Windows de 32 bits de manera predeterminada, pero no pueden usar las API de Win16 o Win32 que necesitan los programas gráficos en Windows. [3] Los programas Terminate and Stay Resident (TSR) para admitir LFN en DOS simple o Windows NT 4 están disponibles.

Si bien DJGPP se ejecuta en modo protegido de 32 bits , su código auxiliar y su biblioteca dependen en gran medida de muchas llamadas de BIOS y DOS de 16 bits. Debido a que las versiones x86-64 de Windows carecen de soporte para programas de 16 bits, [4] [5] no hay NTVDM y las aplicaciones DJGPP no se pueden ejecutar. En los sistemas x86-64, estas aplicaciones funcionan solo mediante emulación (p. ej ., DOSBox ), virtualización x86 (p. ej ., VirtualBox ) o similar (p. ej ., DOSEMU de Linux ). Este problema surge porque en modo largo los procesadores x86-64 no soportan el modo virtual 8086se utiliza para ejecutar código de 16 bits en procesadores IA-32. Las CPU x86 más nuevas con VT-x admiten el modo real paginado y la ejecución en modo invitado sin restricciones.