| DJGPP | |
|---|---|
GCCを利用した DJGPP 環境 | |
| 開発者 | DJデロリー |
| 安定版リリース | |
| オペレーティング·システム | DOSおよび 32 ビットWindows |
| タイプ | コンパイラ |
| ライセンス | GNU GPL |
| Webサイト | www.delorie.com/djgpp |
| リポジトリ | |
DJのGNUプログラミング・プラットフォーム(DJGPP)[ 2 ]は、 Intel 80386レベル以上、IBM PC互換機用のソフトウェア開発スイートであり、 DOSオペレーティングシステムをサポートしています。1989年にプロジェクトを開始したDJ Delorieが主導しています。これは、GNUコンパイラ・コレクション(GCC)と、主にBash、find、tar、ls、G AWK、sed、ldなどのGNUユーティリティをDOSプロテクト・モード・インターフェース(DPMI)に移植したものです。サポートされている言語は、C、C++、Objective-C /C++、Ada、Fortran、Pascalです。当初はDJGCCと呼ばれていましたが、後にC++サポートが追加された際にDJGCCからDJGPPに改名されました。ただし、「PP」は「Plus Plus」ではなく「Programming Platform」の略だと言われています。[ 3 ]
このコンパイラは32ビットコードを生成し、ネイティブでは32ビット保護モードで動作しますが、OSの基本的なサポートが必要な場合は16ビットDOSコールに切り替えます。ただし、Open Watcom C/C++コンパイラとは異なり、安定性向上のためNULLポインタ保護を優先するため、ゼロベースのフラットモデルではありません。現在はCOFF形式のバリアントに基づいています。適切なDPMIホスト(CWSDPMI r7またはHDPMI32など)を使用する場合、純粋なDOS環境で最大4GBのRAMにアクセスできます。
2025 年 4 月現在、DJGPP 2 の主なコンポーネントは次のとおりです。
DJGPP を使えば、UNIX / Linux などのソフトウェアを DOS 向けにクロスコンパイルすることも可能です。DJGPP ライブラリとプログラムはどちらもこの方法でコンパイル、リンクし、DOS または DOS エミュレータを搭載したマシンに展開できます。
DJGPPは、ANSI CおよびC99規格、DOS API、そして古いPOSIX系環境と互換性のあるインターフェースをプログラマに提供します。コンパイルされたバイナリは長いファイル名(LFN)に対応しており、ほとんどの32ビットWindowsではデフォルトでLFNを処理できますが、 Windows上のグラフィカルプログラムに必要なWin16またはWin32 APIは使用できません。[ 5 ]通常のDOSまたはWindows NT 4でLFNをサポートするためのTSR( Terminate-and-Stay-resident)プログラムが利用可能です。
DJGPP は 32 ビット保護モードで動作しますが、そのスタブとライブラリは多くの 16 ビット DOS および BIOS 呼び出しに大きく依存しています。Windowsのx86-64バージョンは16 ビット プログラムをサポートしていないため、[ 6 ] [ 7 ] NTVDMはなく、DJGPP アプリケーションは実行できません。x86-64 システムでは、これらのアプリケーションはエミュレーション ( DOSBoxなど)、x86 仮想化( VirtualBoxなど)、または類似のもの (Linux のDOSEMUなど) を通じてのみ機能します。この問題は、ロング モードの x86-64 プロセッサが、IA-32 プロセッサで 16 ビット コードを実行するために使用される仮想 8086 モードをサポートしていないために発生します。VT -xを備えた新しい x86 CPU は、ページングされたリアル モードと無制限のゲスト モード実行をサポートしています。
もう 1 つの人気のある (ただし古くなった) GCC ベースの開発システムは、DJ[sic] Delorie の DOS システム用の無料の 32 ビット開発環境である DJGPP です。
プログラムの対象ハードウェアプラットフォームは、DOSまたはDOS互換オペレーティングシステムを搭載したPCプラットフォームです。DJGPPプログラムはWindowsの「DOSプロンプト」ボックスで実行されます。
ビットMS-DOSおよびMicrosoft Windows 3.xユーティリティは起動しません。これらのプログラムを起動しようとすると、「Program.exeは有効なWin32アプリケーションではありません」というエラーメッセージが表示されます。