من NAND إلى Tetris - بناء كمبيوتر حديث

يشير هذا الريبو إلى دورتين متاحتين في Coursera:
- بناء كمبيوتر حديث من المبادئ الأولى: من NAND إلى Tetris (الجزء الأول).
- بناء كمبيوتر حديث من المبادئ الأولى: NAND إلى Tetris الجزء الثاني
سوف تقوم برحلة ذاتية ذاتية من خلال بناء جهاز كمبيوتر من الألف إلى الياء ، بدءًا من الجبر المنطقي والبوابات المنطقية وينتهي بجهاز كمبيوتر للأغراض العامة بشكل كامل. سوف تتعرف على تجريدات الأجهزة ، وتنفيذها بنفسك ، وتجربة في نهاية المطاف إثارة بناء نظام معقد. يحتوي كل مجلد على حلولي الخاصة للمهام وملاحظات الشخصية الخاصة بي:
- المشروع 1: بناء بوابات المنطق الأساسية مثل ، أو ، أو ، و Multiplexor
- المشروع 2: بناء مجموعة من رقائق Adder ووحدة منطقية حسابية (ALU)
- المشروع 3: سجلات البناء ووحدات الذاكرة وذاكرة الوصول العشوائي (RAM)
- المشروع 4: تعلم لغة الآلة وكتابة البرامج منخفضة المستوى
- المشروع 5: استخدام مجموعة الشرائح من المشاريع 1-3 لبناء وحدة معالجة مركزية (CPU) ومنصة للأجهزة قادرة على تشغيل البرامج بلغة الجهاز من المشروع 4
- المشروع 6: تطوير مجمع لترجمة البرامج المكتوبة بلغة الجهاز الرمزي إلى رمز ثنائي.
- المشروع 7: في هذه الوحدة ، نبدأ في بناء جهاز افتراضي قائم على المكدس. بعد تقديم بنية الماكينة الظاهرية ولغة VM الخاصة بها (والتي تشبه رمز Bytecode من Java) ، نقوم بتطوير مترجم VM أساسي (على غرار JVA JVA ) ، المصمم لترجمة برامج VM إلى لغة آلة الاختراق.
- المشروع 8: في الوحدة السابقة ، قدمنا تجريدًا من الجهاز الظاهري ، وقمنا بتطوير مترجم VM أساسي يقوم بتنفيذ أوامر الوصول إلى الذاكرة الخاصة بلغة VM. في هذه الوحدة ، سنكمل مترجم VM من خلال تنفيذ أوامر المتفرعة والوظائف الخاصة بلغة VM المتبقية.
- المشروع 9: في هذه الوحدة ، نقدم لغة جاك ، وكذلك برمجة جاك. تتوج الوحدة النمطية في مشروع ستطور فيه تطبيقًا تفاعليًا بسيطًا من اختيارك ، باستخدام Jack.
- المشروع 10: يتكون ترجمة برنامج رفيع المستوى إلى لغة منخفضة المستوى من مراحل محددة جيدًا وأكثر أو أقل مستقلة: تحليل بناء الجملة ، وتوليد الكود . تحليل هذه الوحدة-موضوع هذه الوحدة-من مرحلتين فرعيتين: تحليل معجمي (يسمى أيضًا الرمز المميز ) ، والمساواة . سيكون المشروع الناتج محلل Jack - وهو برنامج يكشف عن بناء جملة برامج Jack دون إنشاء رمز قابل للتنفيذ.
- المشروع 11: في المشروع السابق ، قمنا ببناء محلل بناء الجملة للغة جاك. في هذا سوف نتحول هذا المحلل إلى مترجم جاك على نطاق واسع. سوف يستلزم ذلك تعديل منطق المحلل الذي يولد رمز XML في منطق يولد رمز VM قابل للتنفيذ.
- المشروع 12: نظام التشغيل هو مجموعة من خدمات البرمجيات المصممة لإغلاق الفجوات بين البرامج عالية المستوى والأجهزة الأساسية التي تعمل عليها. يتم نشر اللغات الحديثة مثل Java و Python مع مكتبات فئة قياسية تنفذ العديد من خدمات نظام التشغيل هذه. في هذا المشروع ، سنقوم بتطوير نظام تشغيل أساسي سيتم تعبئته في مجموعة مماثلة من مكتبات الفصل. سيتم تطوير نظام التشغيل في Jack ، باستخدام استراتيجية bootstrapping ، على غرار كيفية تطوير Linux في C.