(มิเรอร์บน GitHub)
cproc เป็นคอมไพเลอร์ C11 ที่ใช้ QBE เป็นแบ็กเอนด์ เผยแพร่ภายใต้ใบอนุญาต ISC
คุณสมบัติ C23 บางอย่างและส่วนขยาย GNU C ก็ถูกนำมาใช้เช่นกัน
ยังมีอะไรให้ทำอีกมาก แต่ปัจจุบันใช้ภาษาส่วนใหญ่แล้วและสามารถสร้างซอฟต์แวร์ได้ รวมถึงตัวมันเอง, mcpp, gcc 4.7, binutils และอื่นๆ อีกมากมาย
ได้รับแรงบันดาลใจจากคอมไพเลอร์ C ขนาดเล็กอื่นๆ อีกหลายตัว รวมถึง 8cc, c, lacc และ scc
คอมไพเลอร์นั้นเขียนด้วยมาตรฐาน C99 และสามารถสร้างด้วยคอมไพเลอร์ C99 ใดๆ ก็ได้
ไดรเวอร์ POSIX ขึ้นอยู่กับอินเทอร์เฟซ POSIX.1-2008 และ Makefile ต้องใช้ make(1) ที่เข้ากันได้กับ POSIX
ณ รันไทม์ คุณจะต้องมี QBE, แอสเซมเบลอร์ และตัวเชื่อมโยงสำหรับระบบเป้าหมาย เนื่องจากยังไม่ได้ใช้ตัวประมวลผลล่วงหน้า จึงจำเป็นต้องใช้ตัวประมวลผลภายนอกเช่นกัน
สถาปัตยกรรมทั้งหมดที่รองรับโดย QBE ควรใช้งานได้ (ปัจจุบันคือ x86_64, aarch64 และ riscv64)
เป้าหมายต่อไปนี้ได้รับการทดสอบโดยการสร้างอย่างต่อเนื่องและรู้จักการบูตสแตรปและผ่านการทดสอบทั้งหมด:
x86_64-linux-muslx86_64-linux-gnux86_64-freebsdaarch64-linux-muslaarch64-linux-gnuriscv64-linux-gnu รัน ./configure เพื่อสร้าง config.h และ config.mk ที่เหมาะกับระบบของคุณ หากระบบของคุณไม่ได้รับการสนับสนุนโดยสคริปต์กำหนดค่า คุณสามารถสร้างไฟล์เหล่านี้ได้ด้วยตนเอง config.h ควรกำหนดอาร์เรย์สตริงหลายรายการ ( static char *[] ):
startfiles : ออบเจ็กต์ที่จะส่งไปยังตัวเชื่อมโยงที่จุดเริ่มต้นของคำสั่ง linkendfiles : วัตถุที่จะส่งผ่านไปยังตัวเชื่อมโยงที่ส่วนท้ายของคำสั่งลิงก์ (รวมถึง libc)preprocesscmd : คำสั่งตัวประมวลผลล่วงหน้า และแฟล็กที่จำเป็นใดๆ สำหรับระบบเป้าหมายcodegencmd : คำสั่ง QBE และแฟล็กเป้าหมายที่ชัดเจนassemblecmd : คำสั่งแอสเซมเบลอร์linkcmd : คำสั่งตัวเชื่อมโยง คุณอาจต้องการปรับแต่งสภาพแวดล้อมหรือ config.mk ด้วย CC , CFLAGS และ LDFLAGS ที่เหมาะสม
เมื่อเสร็จแล้วคุณสามารถสร้างด้วย
make
Makefile มีเป้าหมายอื่นๆ อีกหลายรายการที่สามารถใช้สำหรับการบูตสแตรปได้ เป้าหมายเหล่านี้ต้องการความสามารถในการเรียกใช้เครื่องมือที่ระบุใน config.h
stage2 : สร้างคอมไพลเลอร์ด้วยเอาต์พุตเริ่มต้น ( stage1 )stage3 : สร้างคอมไพลเลอร์ด้วยเอาต์พุต stage2bootstrap : สร้างคอมไพเลอร์ stage2 และ stage3 และตรวจสอบว่าคอมไพเลอร์เหมือนกันทุกไบต์ volatile - ประเภทที่ผ่านการรับรอง (#7)long double (#3)มีรายชื่ออีเมลอยู่ที่ ~mcf/[email protected] คุณสามารถใช้มันเพื่อการสนทนาทั่วไป คำถาม แพตช์ หรือรายงานข้อผิดพลาดได้ (หากคุณไม่มีบัญชี sr.ht)
กรุณารายงานปัญหาใด ๆ ไปที่ ~mcf/[email protected]
แพทช์ได้รับการชื่นชมอย่างมาก ส่งพวกเขาไปยังรายชื่อผู้รับจดหมาย (ที่ต้องการ) หรือเป็นคำขอดึงบนมิเรอร์ GitHub