热门问题
时间线
聊天
视角
DJGPP
来自维基百科,自由的百科全书
Remove ads
DJ的GNU編程平台 ( DJGPP ) [2]是Intel 80386及以上的一個軟件開發套件,支持DOS操作系統的IBM PC兼容機 。它由DJ Delorie指導並於1989年開始這個項目。 它是GNU編譯器集合 (GCC)的一個移植 ,主要是GNU實用程序,如Bash ,find ,tar ,ls ,GAWK ,sed和ld到DOS保護模式介面(DPMI)。 支持的語言包括C ,C ++,Objective-C/ C ++,Ada,Fortran和Pascal。DJGPP在2004年被描述為過時產品。[3]
此條目翻譯品質不佳。 (2019年8月15日) |
編譯器生成32位代碼,該代碼在32位保護模式下本機運行,同時切換回16位DOS調用以獲得基本操作系統支持。 但是,與Open Watcom C / C ++編譯器不同 ,其並非從零開始的平面模型,因為它更喜歡使用NULL指針保護以獲得更好的穩定性。 它目前基於COFF格式的變體。 當使用合適的DPMI主機(例如, CWSDPMI r7或HDPMI32)時,它可以在純DOS中訪問高達4 GB的RAM。
Remove ads
兼容性
DJGPP為程序員提供了一個與ANSI C和C99標準兼容的接口,DOS API以及類似POSIX的舊環境。 編譯的二進制文件是長文件名 (LFN)識別的,默認情況下可以在大多數32位Windows下處理這些名稱,但是它們不能使用Windows上的圖形程序所需的Win16或Win32 API。 [3] 終止和駐留 (TSR)程序來支持普通DOS或Windows NT 4下的LFN。
雖然DJGPP在32位保護模式下運行 ,但它的存根和庫很大程度上依賴於許多16位DOS和BIOS調用。 因為x86-64版本的Windows支持16位程序, [4][5]沒有NTVDM ,並且無法運行DJGPP應用程序。 在x86-64系統下,這些應用程序僅通過仿真運行(例如 DOSBox ), x86虛擬化 (例如 VirtualBox )或類似的(例如 Linux的DOSEMU )。 出現此問題是因為在長模式 x86-64處理器不支持用於在IA-32處理器中運行16位代碼的虛擬8086模式 。 帶有VT-x的較新的x86 CPU確實支持分頁實模式和不受限制的訪客模式執行。
Remove ads
參見
- FreeDOS
- Cygwin
- EMX
- GnuWin32
- MinGW
- 開源Watcom C / C ++編譯器
- Allegro
參考資料
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads