MazuCC هو مترجم لغة C البسيط مع إنشاء كود x86_64. الغرض منه هو دعم ميزات لغة C99 الجزئية مع الحفاظ على الكود صغيرًا وبسيطًا قدر الإمكان.
تشغيل make للبناء:
$ make
يأتي MazuCC مع اختبارات الوحدة. لإجراء الاختبارات، قم بإعطاء "التحقق" كوسيطة:
$ make check
من المعروف أن MazuCC يعمل على نظامي GNU/Linux وmacOS.
استخدم MazuCC لتجميع مصدر C:
$ ./mzcc sample/nqueen.c
وبدلاً من ذلك، يقبل MazuCC التدفق من الإدخال القياسي. النموذج المعادل للأمر أعلاه هو:
$ cat sample/nqueen.c | ./mzcc -
سوف تحصل على التجميع x86_64 الذي تم إنشاؤه في بناء جملة AT&T. يمكن تجميع الإخراج وربطه بملف قابل للتنفيذ صالح:
$ ./mzcc -o sample/nqueen.s sample/nqueen.c
$ gcc -no-pie -o sample/nqueen sample/nqueen.s
إذا تم تجميع MazuCC وتنفيذه على نظام التشغيل macOS، فيجب حذف الوسيطة أعلاه -no-pie
.
الإخراج المرجعي sample/nqueen
المترجمة من MazuCC:
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 الذي يمكن العثور عليه في ملف الترخيص.