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 文件中找到。