(มิเรอร์บน 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-musl
x86_64-linux-gnu
x86_64-freebsd
aarch64-linux-musl
aarch64-linux-gnu
riscv64-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
: สร้างคอมไพลเลอร์ด้วยเอาต์พุต stage2
bootstrap
: สร้างคอมไพเลอร์ stage2
และ stage3
และตรวจสอบว่าคอมไพเลอร์เหมือนกันทุกไบต์ volatile
- ประเภทที่ผ่านการรับรอง (#7)long double
(#3)มีรายชื่ออีเมลอยู่ที่ ~mcf/[email protected] คุณสามารถใช้มันเพื่อการสนทนาทั่วไป คำถาม แพตช์ หรือรายงานข้อผิดพลาดได้ (หากคุณไม่มีบัญชี sr.ht)
กรุณารายงานปัญหาใด ๆ ไปที่ ~mcf/[email protected]
แพทช์ได้รับการชื่นชมอย่างมาก ส่งพวกเขาไปยังรายชื่อผู้รับจดหมาย (ที่ต้องการ) หรือเป็นคำขอดึงบนมิเรอร์ GitHub