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 条項ライセンスに基づいて自由に再配布できます。このソース コードの使用は、LICENSE ファイルにある BSD スタイルのライセンスによって管理されます。