![]() | |
![]() Среда DJGPP, использующая GCC | |
Разработчик(и) | Диджей Делори |
---|---|
Стабильный релиз | 2.05 / 3 ноября 2015 г. ( 2015-11-03 ) [1] |
Репозиторий |
|
Операционная система | DOS и 32-битная Windows |
Тип | Компилятор |
Лицензия | GNU GPL |
Веб-сайт | www.delorie.com/djgpp |
DJ's GNU Programming Platform ( DJGPP ) [2] — это программный пакет для разработки для Intel 80386- уровня и выше, совместимых с IBM PC , который поддерживает операционные системы DOS . Он управляется DJ Delorie, который начал проект в 1989 году. Это порт GNU Compiler Collection (GCC) и в основном утилит GNU, таких как Bash , find , tar , ls , G AWK , sed и ld , на DOS Protected Mode Interface (DPMI). Поддерживаемые языки включают C , C++ , Objective-C /C++, Ada , Fortran и Pascal . Первоначально он назывался DJGCC , а затем был переименован из DJGCC в DJGPP, когда была добавлена поддержка C++, хотя «PP» было сказано, что означает «Programming Platform», а не «Plus Plus». [3]
Компилятор генерирует 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. [4] Доступны программы terminate-and-stay-resident (TSR) для поддержки LFN в простых DOS или Windows NT 4 .
Хотя DJGPP работает в 32-битном защищенном режиме , его заглушка и библиотека в значительной степени зависят от многих 16-битных вызовов DOS и BIOS. Поскольку версии Windows x86-64 не поддерживают 16-битные программы, [5] [6] нет 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 prompt" Windows.
16-разрядные утилиты MS-DOS и Microsoft Windows 3.x не запускаются. При попытке запустить такую программу вы получите сообщение об ошибке "Program.exe не является допустимым приложением Win32".