"30 يومًا من نظام التشغيل محلي الصنع" (كتبه Hikaru Kawasaki) الداعمة لتكييف الكود. نظرًا لأن المؤلف استخدم مجموعة من الأدوات غير القياسية التي كتبها بنفسه ولم يستطع الركض على منصة غير Windows ، يستخدم هذا المشروع NASM و GCC و QEMU وغيرها من الأدوات لتجميع وتشغيله بناءً على الكود الأصلي.
أكمل هذا المشروع محتويات اليوم من 0 إلى 28 (باستثناء جزء العرض الياباني في اليوم الثامن والعشرين) ، وتم الانتهاء من التنفيذ الرئيسي للمشروع. نظرًا لأن محتوى الفصلين الأخيرين من الكتاب يكون أكثر توجهاً نحو التطبيق ، فإنه لم يتم تنفيذه في هذا المشروع. يمكن للأصدقاء المهتمين الاستمرار في إكماله بناءً على الأساس السابق.
nasmgccbinutilsqemu-system-i386mtoolsgdb (استخدام التصحيح)تستخدم أدوات سطر الأوامر الافتراضية Xcode GCC كمستعار لـ Clang تحت MacOS. لم يتم اختبار Clang في تنفيذ المشروع هذا ، وقد تكون هناك مشاكل.
يوصى باستخدام أدوات أدوات x86_64-elf-gcc للتجميع تحت MAC. يمكنك استخدام brew install x86_64-elf-gcc x86_64-elf-binutils x86_64-elf-gdb للتثبيت.
أدخل المجلد المقابل وقم بتشغيله مع الأمر التالي:
$ make qemu
# 若使用工具链包含前缀,如x86_64-elf-,可以使用GCCPREFIX
$ make qemu GCCPREFIX=x86_64-elf- للتصحيح باستخدام GDB ، قم بتعيين DEBUG :
$ make qemu DEBUG=1app : رمز مصدر التطبيقinclude : ملف رأس kernel النظامkernel : رمز kernel النظامlibc : التنفيذ الجزئي للمكتبة القياسية C Simple strcmpstrncmpالرجوع إلى تطبيق XV6:
vsprintfsprintfمن "لغة البرمجة C":
randلن يستمر هذا المشروع في إضافة محتوى من اليوم 29 و Day 30. يمكن للأصدقاء المهتمين الاستمرار في قراءة الفصول اللاحقة.
io_sti بدلاً من io_stihlt __alloca غير صالح في اليوم 28 ، لا يمكن تشغيل sosu2 ينتمي حقوق الطبع والنشر للرمز في المشروع بشكل أساسي إلى المؤلف الأصلي. أقوم فقط بإجراء تعديلات جزئية على الكود للجزء الذي لا يمكن تشغيله مباشرة.