DJGPP

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

 脚注 

 外部リンク 

  - offline 2023, Mirror

Category:フリーコンパイラとフリーインタプリタ
Category:Cコンパイラ
Category:1989年のソフトウェア