DJ's GNU Programming Platform (DJGPP)はDOSが動作するIntel 80386以上相当のIBM PC/AT互換機用のソフトウェア開発スイートである。プロジェクトはDJ Delorieにより1989年に立ち上げられた。GNUコンパイラコレクション(GCC)や、Bash、find、tar、ls、GAWK、sed、およびldなどのユーティリティプログラム(多くはGNUプロジェクトのものである)をDOS Protected Mode Interface (DPMI)へ移植したものである。C言語、C++、Objective-C/C++、Ada、Fortran、およびPascalなどに対応している。

概要 コンパイラは32ビットのプロテクトモードでネイティブに動作し、32ビットのコードを生成する。ただし、OSの機能を利用する際に16ビットのDOS呼び出し命令を使用する。安定のためヌルポインタを保護するためzero-based flat modelではない点でと異なる。現在はCOFFの派生種を使用する。適切なDPMIホスト(例: CWSDPMI r7やHDPMI32)の下では純粋なDOSから最大4 GBのRAMを利用可能である。

、DJGPP 2は主要なコンポーネントとして以下を含む:

GNUコンパイラコレクション 9.3.0 (10.2.0も利用可能) Autoconf 2.5.9 Automake 1.9.4 Binutils 2.34 GNU Bash 4.1.17 GNU Bison 2.4.1, Flex 2.5.4 GNU Emacs 24.5 GNU MPC 1.1.0, MPFR 4.1.0

DJGPPを使用して例えばUNIX/LinuxからDOSへクロスコンパイルすることも可能である。DJGPPライブラリとプログラムはともにDOSまたはDOSエミュレータを搭載したマシンへコンパイル・リンク・デプロイすることができる。

互換性 DJGPPはプログラマに対しANSI CとC99の規格、DOSのAPI、およびより古いPOSIXライクな環境と互換性を持つインタフェースを提供する。コンパイルされたバイナリは長いファイル名(Long filename、LFN)に対応し、32ビットのWindowsのそのようなファイル名を扱うことができる。しかし、多くのGUIアプリケーションが必要とするWin16およびWin32 APIは利用できない。DOSおよびWindows NT 4でLFN対応のTerminate and Stay Resident (TSR)プログラムが利用可能である。

DJGPPは32ビットのプロテクトモードで動作するが、そのスタブやライブラリは多くの16ビットでのDOSやBIOSへの呼び出しを必要とする。x86-64版のWindowsは16ビットのプログラムをサポートせず、NTVDMも存在しないため、DJGPPによるアプリケーションを実行できない。x86-64システムではこれらはエミュレーション(DOSBoxなど)やx86仮想化(VirtualBoxなど)、もしくはそれに類似した方法(Linuxのなど)が必要となる。これはLongモードのx86-64プロセッサが、16ビットの命令を実行するためIA-32プロセッサが利用する仮想86モードをサポートしていないためである。VT-xを利用できるより新しいx86のCPUはページ化されたリアルモードと無制限のゲストモードでの実行をサポートしている。

関連項目

FreeDOS Cygwin

MinGW Open

Windows Subsystem for Linux

脚注

外部リンク

- Mirror