MazuCC
1.0.0
MazuCC 是一個具有 x86_64 程式碼產生功能的簡約 C 編譯器。它旨在支援部分 C99 語言功能,同時保持程式碼盡可能小和簡單。
運行 make 來建置:
$ make
MazuCC 隨附單元測試。若要執行測試,請將“check”作為參數:
$ make check
MazuCC 可以在 GNU/Linux 和 macOS 上運作。
使用MazuCC編譯C原始碼:
$ ./mzcc sample/nqueen.c
或者,MazuCC 接受來自標準輸入的流。上述命令的等價形式是:
$ cat sample/nqueen.c | ./mzcc -
您將獲得採用 AT&T 語法產生的 x86_64 程序集。輸出可以被組裝並連結到有效的可執行檔中:
$ ./mzcc -o sample/nqueen.s sample/nqueen.c
$ gcc -no-pie -o sample/nqueen sample/nqueen.s
如果 MazuCC 在 macOS 上編譯並執行,則應消除上述參數-no-pie
。
MazuCC 編譯的sample/nqueen
的參考輸出:
Q . . . . . . .
. . . . Q . . .
. . . . . . . Q
. . . . . Q . .
. . Q . . . . .
. . . . . . Q .
. Q . . . . . .
. . . Q . . . .
或者,您可以轉儲內部抽象語法樹:
echo ' struct {int x; char y; struct { int t; } z; } a; ' | ./mzcc --dump-ast -
S 表達式形式的預期輸出:
(decl (struct (int)
(char)
((struct (int)))) a)
MazuCC 深受 8cc 的啟發。
MazuCC 可在 BSD 2 條款許可下自由重新分發。此原始程式碼的使用受 BSD 樣式許可證的約束,該許可證可在 LICENSE 檔案中找到。