MazuCC é um compilador C minimalista com geração de código x86_64. O objetivo é oferecer suporte a recursos parciais da linguagem C99, mantendo o código o mais pequeno e simples possível.
Execute make para construir:
$ make
MazuCC vem com testes unitários. Para executar os testes, dê "check" como argumento:
$ make check
Sabe-se que o MazuCC funciona em GNU/Linux e macOS.
Use MazuCC para compilar a fonte C:
$ ./mzcc sample/nqueen.c
Alternativamente, o MazuCC aceita o fluxo da entrada padrão. A forma equivalente para o comando acima é:
$ cat sample/nqueen.c | ./mzcc -
Você obterá o assembly x86_64 gerado na sintaxe da AT&T. A saída pode ser montada e vinculada a um executável válido:
$ ./mzcc -o sample/nqueen.s sample/nqueen.c
$ gcc -no-pie -o sample/nqueen sample/nqueen.s
Se o MazuCC for compilado e executado no macOS, o argumento acima -no-pie
deverá ser eliminado.
Saída de referência de sample/nqueen
compilado pelo MazuCC:
Q . . . . . . .
. . . . Q . . .
. . . . . . . Q
. . . . . Q . .
. . Q . . . . .
. . . . . . Q .
. Q . . . . . .
. . . Q . . . .
Alternativamente, você pode despejar a árvore de sintaxe abstrata interna:
echo ' struct {int x; char y; struct { int t; } z; } a; ' | ./mzcc --dump-ast -
A saída esperada no formato de expressão S:
(decl (struct (int)
(char)
((struct (int)))) a)
MazuCC é fortemente inspirado em 8cc.
MazuCC é livremente redistribuível sob a licença da cláusula BSD 2. O uso deste código-fonte é regido por uma licença estilo BSD que pode ser encontrada no arquivo LICENSE.