MazuCC est un compilateur C minimaliste avec génération de code x86_64. Il est destiné à prendre en charge certaines fonctionnalités du langage C99 tout en gardant le code aussi petit et simple que possible.
Exécutez make pour construire :
$ make
MazuCC est livré avec des tests unitaires. Pour lancer les tests, donnez "check" en argument :
$ make check
MazuCC est connu pour fonctionner à la fois sur GNU/Linux et macOS.
Utilisez MazuCC pour compiler le source C :
$ ./mzcc sample/nqueen.c
Alternativement, MazuCC accepte le flux de l'entrée standard. La forme équivalente à la commande ci-dessus est :
$ cat sample/nqueen.c | ./mzcc -
Vous obtiendrez l'assembly x86_64 généré dans la syntaxe AT&T. La sortie peut être assemblée et liée dans un exécutable valide :
$ ./mzcc -o sample/nqueen.s sample/nqueen.c
$ gcc -no-pie -o sample/nqueen sample/nqueen.s
Si MazuCC est compilé et exécuté sur macOS, l'argument ci-dessus -no-pie
doit être éliminé.
Sortie de référence de sample/nqueen
compilé par MazuCC :
Q . . . . . . .
. . . . Q . . .
. . . . . . . Q
. . . . . Q . .
. . Q . . . . .
. . . . . . Q .
. Q . . . . . .
. . . Q . . . .
Alternativement, vous pouvez vider l'arborescence de syntaxe abstraite interne :
echo ' struct {int x; char y; struct { int t; } z; } a; ' | ./mzcc --dump-ast -
Le résultat attendu sous forme d’expression S :
(decl (struct (int)
(char)
((struct (int)))) a)
MazuCC est fortement inspiré du 8cc.
MazuCC est librement redistribuable sous la licence clause BSD 2. L'utilisation de ce code source est régie par une licence de type BSD qui se trouve dans le fichier LICENSE.