Платформа программирования GNU DJ ( DJGPP ) [2] представляет собой пакет разработки программного обеспечения для уровня Intel 80386 и выше, совместимый с IBM PC , который поддерживает операционные системы DOS . Им руководит DJ Delorie, который начал проект в 1989 году. Это порт коллекции компиляторов GNU (GCC) и в основном утилит GNU , таких как Bash , find , tar , ls , G AWK , sed и ld , для DOS. Интерфейс защищенного режима (DPMI). Поддерживаемые языки включают C , C++ , Objective-C /C++, Ada , Fortran и Pascal .
Компилятор генерирует 32-битный код, который изначально работает в 32-битном защищенном режиме с одновременным переключением обратно на 16-битные вызовы DOS для базовой поддержки ОС. Однако, в отличие от компилятора Open Watcom C/C++ , это не плоская модель с отсчетом от нуля, поскольку для большей стабильности предпочтение отдается защите NULL-указателя. В настоящее время он основан на варианте формата COFF . Он может получить доступ к 4 ГБ ОЗУ в чистом DOS при использовании подходящего хоста DPMI (например, CWSDPMI r7 или HDPMI32).
По состоянию на август 2020 года [обновлять]основные компоненты DJGPP 2 включают:
Также возможно использовать DJGPP для кросс-компиляции программного обеспечения в DOS, например, в UNIX/Linux. Таким образом можно скомпилировать как библиотеки DJGPP, так и программы, скомпоновать их и затем развернуть на машинах с DOS или эмуляторами DOS.
DJGPP предоставляет программисту интерфейс, совместимый со стандартами ANSI C и C99 , API-интерфейсами DOS и более старой средой, подобной POSIX . Скомпилированные двоичные файлы поддерживают длинные имена файлов (LFN) и по умолчанию могут обрабатывать такие имена в большинстве 32-разрядных версий Windows, но они не могут использовать API-интерфейсы Win16 или Win32, необходимые графическим программам в Windows. [3] Доступны резидентные программы завершения и пребывания (TSR) для поддержки LFN под простой DOS или Windows NT 4 .
Хотя DJGPP работает в 32-битном защищенном режиме , его заглушка и библиотека сильно зависят от множества 16-битных вызовов DOS и BIOS. Поскольку версии Windows x86-64 не поддерживают 16-битные программы, [4] [5] нет NTVDM и приложения DJGPP не могут быть запущены. В системах x86-64 эти приложения функционируют только посредством эмуляции (например, DOSBox ), виртуализации x86 (например, VirtualBox ) или аналогичных методов (например, DOSEMU в Linux ). Эта проблема возникает из-за того, что процессоры x86-64 в длинном режиме не поддерживают виртуальный режим 8086 , используемый для запуска 16-битного кода в процессорах IA-32. Более новые процессоры x86 с VT-x поддерживают страничный реальный режим и неограниченное выполнение в гостевом режиме.
Другая популярная, хотя и устаревшая система разработки на основе GCC — DJGPP, бесплатная 32-битная среда разработки DJ[sic] Delorie для систем DOS.
Целевой аппаратной платформой для программ DJGPP является платформа ПК... под управлением DOS... или совместимая с DOS операционная система. Программы DJGPP запускаются под окнами "dos-подсказки" Windows.
Утилиты 16-разрядной версии MS-DOS и Microsoft Windows 3.x не запускаются. Если вы попытаетесь запустить такую программу, вы получите сообщение об ошибке «Program.exe не является допустимым приложением Win32».