مرحبًا بالجميع ، من المفترض أن يكون هذا البرنامج التعليمي توسعًا محدثًا على البرامج التعليمية الحالية التي تركز أكثر على بنية 64 بت x86_64. ليس من المفترض أن تكون مقدمة لـ C أو التجميع ، لذلك قد ترغب في تعلم تلك في مكان آخر أولاً. لقد بذلنا قصارى جهدنا لتوثيق كل شيء بشكل صحيح ، لذلك إذا كان هناك شيء لا تفهمه ، فقد تحتاج إلى العودة ببعض الفصول.
لم يكتمل الأمر بعد ، لكن الأمر قد وصل إلى نقطة شعرنا بها قد تكون مفيدة.
يستهدف هذا البرنامج التعليمي الأشخاص الذين لديهم فهم عام حول C والتجميع ، لكنهم ليسوا خبراء كمبيوتر بالضرورة. إنه مصمم ليكون متاحًا قدر الإمكان ، لذلك قد يشعر في بعض الأحيان مثلما نتفوق على بعض المفاهيم (وهذا جيد). ومع ذلك ، إذا وجدت نفسك تضيع بشكل يائس ، فيرجى إخبارنا بذلك. لقد أنشأنا هذا المشروع لأننا لم نحب حراسة البوابة التي شوهدت في تطوير نظام التشغيل ، وسنكون سعداء بتعديل تفسيراتنا أو توجيهك إلى مورد آخر قد يكون أكثر فائدة.
إذا كنت ترغب في المساهمة في هذا المشروع ، أو إضافة شيء خاص بك ، فيرجى إرسال طلب سحب. سأحاول الوصول إليهم في أقرب وقت ممكن :)
يستخدم هذا البرنامج التعليمي جناح برنامج التحويل البرمجي LLVM ، بما في ذلك clang و ld.lld . إذا لم يكن لديك تلك المثبتة ، فستحتاج إلى القيام بذلك وإضافتها إلى مسارك. نستخدم أيضًا nasm لمجمعنا ، و qemu-system-x86_64 كمحاكي. اختياريا ، يمكن استخدام gdb لتصحيح رمز النواة. على الرغم من أنه غير مطلوب ، فإن هذا البرنامج التعليمي يستخدم نصوص Shell لجعل البناء وتصحيح الأخطاء أسهل. نوصي بشدة بتثبيت bash على /bin/bash (أو على الأقل متناظرة هناك). إذا لم يكن كذلك ، يمكنك تشغيل البرامج النصية باستخدام أمر bash .
يجب أن تكون قادرًا على تشغيل جميع الأوامر المذكورة أعلاه في نافذة طرفية دون تحديد المسار الكامل. إذا لم تتمكن من ذلك ، فربما تحتاج إلى تثبيتها وإضافتها إلى مسارك. تم اختبار هذا البرنامج التعليمي على MacOS (Catalina و Big Sur) وكذلك Ubuntu (20.04). لا يتم دعم أي أنظمة تشغيل أخرى رسميًا ، على الرغم من أنها يجب أن تعمل بشكل جيد على معظم آلات *NIX.
ملاحظة: تواجه MACOS
gdbصعوبة في رموز التصحيح من kernel (ELF64). قد تحتاج إلى تغيير مستوى إخراج التصحيح إلى -GLLDB في Makefiles واستخدام ذلك بدلاً من ذلك ، أو إنشاءgdbجديد من المصدر.
هذا كل شيء! لا حاجة لتثبيت أي متقاطع أو أدوات أخرى ، لأن Clang قد غطى معظمها بالفعل. حظا سعيدا ، وإذا كان لديك أي مشكلة لا تتردد في إخبارنا!