Введение

Реализация инструментария GNU для DOS

DJ's GNU Programming Platform (DJGPP) – это пакет разработки программного обеспечения для компьютеров, совместимых с IBM PC, уровня Intel 80386 и выше, поддерживающий операционные системы DOS. Проект возглавляет DJ Delorie, который начал его в 1989 году. Это порт компилятора GNU Compiler Collection (GCC) и, в основном, утилит GNU, таких как Bash, find, tar, ls, GAWK, sed и ld, для DOS Protected Mode Interface (DPMI). Поддерживаемые языки программирования включают C, C++, Objective C/C++, Ada, Fortran и Pascal.

Совместимость

DJGPP предоставляет программисту интерфейс, совместимый со стандартами ANSI C и C99, API DOS и более старой средой, подобной POSIX. Скомпилированные двоичные файлы по умолчанию поддерживают длинные имена файлов (LFN) и могут обрабатывать их в большинстве 32-битных версий Windows, однако они не могут использовать API Win16 или Win32, необходимые графическим программам в Windows. Для поддержки LFN в обычной DOS или Windows NT 4 доступны программы, завершающиеся и остающиеся в резидентной памяти (TSR). Несмотря на то, что DJGPP работает в 32-битном защищенном режиме, его загрузчик и библиотека в значительной степени зависят от множества 16-битных вызовов DOS и BIOS. Поскольку 64-битные версии Windows x86 не поддерживают 16-битные программы и не имеют NTVDM, приложения DJGPP не могут быть запущены. В системах x86-64 эти приложения функционируют только через эмуляцию (например, DOSBox), виртуализацию x86 (например, VirtualBox) или аналогичные средства (например, DOSEMU в Linux). Эта проблема возникает из-за того, что в длинном режиме процессоры x86-64 не поддерживают виртуальный режим 8086, используемый для запуска 16-битного кода на процессорах IA-32. Более новые процессоры x86 с поддержкой VT-x поддерживают страничную реальную модель и выполнение в гостевом режиме без ограничений.