ดีเจจีพีพี
DJ's GNU Programming Platform ( DJGPP ) [ 2 ]เป็นชุดพัฒนาซอฟต์แวร์สำหรับIntel 80386ระดับขึ้นไป และคอมพิวเตอร์ที่เข้ากันได้กับ IBM PCซึ่งรองรับ ระบบปฏิบัติการ 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เดิมทีเรียกว่าDJGCCและต่อมาเปลี่ยนชื่อจาก DJGCC เป็น DJGPP เมื่อเพิ่มการรองรับ C++ แม้ว่า "PP" จะหมายถึง "Programming Platform" มากกว่า "Plus Plus" ก็ตาม[ 3 ]
ภาพรวม
คอมไพเลอร์สร้างโค้ด 32 บิต ซึ่งทำงานใน โหมดป้องกัน 32 บิตโดยตรงในขณะที่สลับกลับไปใช้การเรียกใช้ DOS 16 บิตสำหรับการสนับสนุนระบบปฏิบัติการพื้นฐาน อย่างไรก็ตาม แตกต่างจากคอมไพเลอร์ Open Watcom C/C++ตรงที่ไม่ได้ใช้โมเดลแบบฐานศูนย์ (zero-based flat model) เนื่องจากเลือกใช้การป้องกันด้วยพอยเตอร์ NULL เพื่อความเสถียรที่ดีกว่า ปัจจุบันใช้รูป แบบ COFF เวอร์ชันหนึ่ง สามารถเข้าถึง RAM ได้สูงสุด 4 GB ใน DOS บริสุทธิ์เมื่อใช้ โฮสต์ DPMI ที่เหมาะสม (เช่นCWSDPMI r7 หรือ HDPMI32)
ข้อมูล ณ เดือนเมษายน พ.ศ. 2568 ส่วนประกอบหลักของ DJGPP 2 ประกอบด้วย:
- GNU Compiler Collection 9.3.0 (มีเวอร์ชัน 10.2.0, 12.2.0 และ 14.2.0 [ 4 ]ให้เลือกใช้งาน รวมถึงเวอร์ชันอื่นๆ ด้วย)
- ออโต้คอนฟ์ 2.5.9
- ออโต้เมค 1.9.4
- Binutils 2.35.1
- จีเอ็นยู บาช 4.4
- GNU Bison 2.4.1, Flex 2.5.4
- GNU Emacs 29
- GNU MPC 1.1.0, MPFR 4.1.0
นอกจากนี้ ยังสามารถใช้ DJGPP ในการคอมไพล์ซอฟต์แวร์ข้ามระบบปฏิบัติการ เช่น UNIX/Linux ได้อีกด้วย ทั้งไลบรารีของ DJGPP และโปรแกรมต่างๆ สามารถคอมไพล์ เชื่อมโยง และติดตั้งใช้งานบนเครื่องที่มี DOS หรือโปรแกรมจำลอง DOS ได้ด้วยวิธีนี้
ความเข้ากันได้
DJGPP นำเสนออินเทอร์เฟซสำหรับโปรแกรมเมอร์ที่เข้ากันได้กับ มาตรฐาน ANSI CและC99 , API ของ DOS และสภาพแวดล้อมที่คล้ายกับPOSIX รุ่นเก่า ไบนารีที่คอมไพล์แล้วนั้นรองรับ ชื่อไฟล์ยาว (LFN) และสามารถจัดการชื่อดังกล่าวได้ภายใต้ Windows 32 บิตส่วนใหญ่โดยค่าเริ่มต้น แต่ไม่สามารถใช้ API ของ Win16หรือ Win32 ที่โปรแกรมกราฟิกบน Windows ต้องการได้[ 5 ] มี โปรแกรม terminate-and-stay-resident (TSR) เพื่อรองรับ LFN ภายใต้DOSหรือWindows NT 4 ทั่วไป
แม้ว่า DJGPP จะทำงานใน โหมดป้องกัน 32 บิตแต่ stub และไลบรารีของมันต้องพึ่งพาการเรียกใช้ DOS และ BIOS 16 บิตจำนวนมาก เนื่องจากWindowsเวอร์ชันx86-64ขาดการสนับสนุนโปรแกรม 16 บิต[ 6 ] [ 7 ]จึงไม่มีNTVDMและแอปพลิเคชัน DJGPP ไม่สามารถทำงานได้ ภายใต้ระบบ x86-64 แอปพลิเคชันเหล่านี้ทำงานได้ผ่านการจำลอง (เช่นDOSBox ) การจำลองเสมือน x86 (เช่นVirtualBox ) หรือที่คล้ายกัน (เช่นDOSEMU ของ Linux ) ปัญหานี้เกิดขึ้นเนื่องจากในโหมด longโปรเซสเซอร์ x86-64 ไม่รองรับโหมดเสมือน 8086ที่ใช้ในการรันโค้ด 16 บิตในโปรเซสเซอร์ IA-32 CPU x86 รุ่นใหม่ที่มีVT-xรองรับโหมดจริงแบบ paged และการเรียกใช้โหมด guest แบบไม่จำกัด
ดูเพิ่มเติม
- ฟรีดออส
- Cygwin - เลเยอร์ความเข้ากันได้กับ UNIX ที่มีไลบรารีและแอปพลิเคชันที่พอร์ตมามากมาย
- EMX - การนำมาตรฐาน POSIX มาใช้กับระบบปฏิบัติการ DOS (และ OS/2 ด้วย)
- จีนูวิน32
- MinGW - ชุดเครื่องมือ GNU เวอร์ชันสำหรับ Windows ที่ออกแบบมาให้ต้องการการสนับสนุนขณะรันไทม์น้อยที่สุด
- คอมไพเลอร์ Watcom C/C++แบบเปิด
- อัลเลโกร
- ระบบย่อยของ Windows สำหรับ Linux
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- เว็บไซต์ของดีเจเดโลรี