MazuCC ist ein minimalistischer C-Compiler mit x86_64-Codegenerierung. Es soll Teilfunktionen der C99-Sprache unterstützen und gleichzeitig den Code so klein und einfach wie möglich halten.
Führen Sie make aus, um Folgendes zu erstellen:
$ make
MazuCC wird mit Unit-Tests geliefert. Um die Tests auszuführen, geben Sie „check“ als Argument an:
$ make check
MazuCC funktioniert bekanntermaßen sowohl unter GNU/Linux als auch unter macOS.
Verwenden Sie MazuCC, um den C-Quellcode zu kompilieren:
$ ./mzcc sample/nqueen.c
Alternativ akzeptiert MazuCC den Stream von der Standardeingabe. Die äquivalente Form für den obigen Befehl ist:
$ cat sample/nqueen.c | ./mzcc -
Sie erhalten die generierte x86_64-Assembly in AT&T-Syntax. Die Ausgabe kann zusammengestellt und in eine gültige ausführbare Datei verknüpft werden:
$ ./mzcc -o sample/nqueen.s sample/nqueen.c
$ gcc -no-pie -o sample/nqueen sample/nqueen.s
Wenn MazuCC unter macOS kompiliert und ausgeführt wird, sollte das obige Argument -no-pie
eliminiert werden.
Referenzausgabe des mit MazuCC kompilierten sample/nqueen
:
Q . . . . . . .
. . . . Q . . .
. . . . . . . Q
. . . . . Q . .
. . Q . . . . .
. . . . . . Q .
. Q . . . . . .
. . . Q . . . .
Alternativ können Sie einen internen abstrakten Syntaxbaum ausgeben:
echo ' struct {int x; char y; struct { int t; } z; } a; ' | ./mzcc --dump-ast -
Die erwartete Ausgabe in S-Ausdrucksform:
(decl (struct (int)
(char)
((struct (int)))) a)
MazuCC ist stark von 8cc inspiriert.
MazuCC ist unter der BSD-2-Klausel-Lizenz frei weiterverbreitbar. Die Nutzung dieses Quellcodes unterliegt einer BSD-ähnlichen Lizenz, die in der LICENSE-Datei zu finden ist.