(鏡像在 GitHub 上)
cproc是使用 QBE 作為後端的 C11 編譯器。它是根據 ISC 許可證發布的。
也實作了一些 C23 功能和 GNU C 擴充。
還有很多工作要做,但它目前實現了大部分語言,並且能夠建立軟體,包括它本身、mcpp、gcc 4.7、binutils 等。
它受到其他幾個小型 C 編譯器的啟發,包括 8cc、c、lacc 和 scc。
編譯器本身是用標準 C99 寫的,可以使用任何符合 C99 的編譯器來建置。
POSIX 驅動程式依賴 POSIX.1-2008 接口,且Makefile需要 POSIX 相容的 make(1)。
在運行時,您將需要 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 :在連結指令開頭傳遞給連結器的物件。endfiles :在連結指令(包括 libc)末端傳遞給連結器的物件。preprocesscmd :預處理器指令以及目標系統的任何必要標誌。codegencmd :QBE 指令,以及可能的明確目標標誌。assemblecmd :彙編指令。linkcmd :連結器指令。您可能還想使用適當的CC 、 CFLAGS和LDFLAGS自訂您的環境或config.mk 。
完成此操作後,您可以使用
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 映像上的拉取請求。