จาก NAND ถึง Tetris - สร้างคอมพิวเตอร์ที่ทันสมัย

repo นี้หมายถึงสองหลักสูตรที่มีอยู่ใน Coursera:
- สร้างคอมพิวเตอร์ที่ทันสมัยจากหลักการแรก: จาก NAND ถึง Tetris (ตอนที่ 1)
- สร้างคอมพิวเตอร์ที่ทันสมัยจากหลักการแรก: Nand to Tetris Part II
คุณจะเดินทางด้วยตนเองผ่านการสร้างคอมพิวเตอร์จากพื้นดินขึ้นไปเริ่มต้นด้วยพีชคณิตบูลีนและประตูตรรกะและลงท้ายด้วยคอมพิวเตอร์อเนกประสงค์ทั่วไปที่ใช้งานได้อย่างสมบูรณ์ คุณจะได้เรียนรู้เกี่ยวกับ abstractions ฮาร์ดแวร์นำไปใช้ด้วยตัวเองและในที่สุดก็ประสบกับความตื่นเต้นในการสร้างระบบที่ซับซ้อน แต่ละโฟลเดอร์มีโซลูชั่นของฉันเองในการมอบหมายและบันทึกส่วนตัวของฉัน:
- โครงการที่ 1: การสร้างประตูตรรกะพื้นฐานเช่นและหรือไม่และมัลติเพล็กเตอร์
- โครงการที่ 2: การสร้างชิป adder หลากหลายและหน่วยตรรกะเลขคณิต (ALU)
- โครงการ 3: การสร้างทะเบียนหน่วยหน่วยความจำและหน่วยความจำการเข้าถึงแบบสุ่ม (RAM)
- โครงการที่ 4: การเรียนรู้ภาษาเครื่องจักรและการเขียนโปรแกรมระดับต่ำ
- โครงการที่ 5: การใช้ชิปเซ็ตจากโครงการ 1-3 เพื่อสร้างหน่วยประมวลผลกลาง (CPU) และแพลตฟอร์มฮาร์ดแวร์ที่สามารถเรียกใช้โปรแกรมในภาษาเครื่องจากโครงการ 4
- โครงการที่ 6: การพัฒนาแอสเซมเบลอร์เพื่อแปลโปรแกรมที่เขียนด้วยภาษาเครื่องสัญลักษณ์เป็นรหัสไบนารี
- โครงการที่ 7: ในโมดูลนี้เราเริ่มสร้างเครื่องเสมือนที่ใช้สแต็ก หลังจากนำเสนอสถาปัตยกรรมเครื่องเสมือนจริงและภาษา VM (ซึ่งคล้ายกับ ไบต์ ของ Java) เราพัฒนานักแปล VM พื้นฐาน (คล้ายกับ JVM ของ Java) ออกแบบมาเพื่อแปลโปรแกรม VM เป็นภาษาเครื่องแฮ็ค
- โครงการที่ 8: ในโมดูลก่อนหน้านี้เรานำเสนอสิ่งที่เป็นนามธรรมของเครื่องเสมือนและพัฒนาตัวแปล VM พื้นฐานที่ใช้คำสั่งเลขคณิตและการเข้าถึงหน่วยความจำของ VM ในโมดูลนี้เราจะทำการแปล VM โดยใช้คำสั่งการแตกแขนงและการเรียกใช้ฟังก์ชั่นของ VM ที่เหลือ
- โครงการ 9: ในโมดูลนี้เราแนะนำภาษาแจ็ครวมถึงการเขียนโปรแกรมแจ็ค โมดูลปิดท้ายในโครงการที่คุณจะพัฒนาแอปพลิเคชันแบบโต้ตอบแบบง่าย ๆ ตามที่คุณเลือกโดยใช้ Jack
- โครงการที่ 10: การแปลของโปรแกรมระดับสูงเป็นภาษาระดับล่างประกอบด้วยสองขั้นตอนที่กำหนดไว้อย่างดีและมีความเป็นอิสระมากขึ้นหรือน้อยลง: การ วิเคราะห์ ไวยากรณ์ และ การ สร้าง รหัส โครงการที่ได้จะเป็น Jack Analyzer - โปรแกรมที่เปิดตัวไวยากรณ์ของโปรแกรม Jack โดยไม่ต้องสร้างรหัสปฏิบัติการ
- โครงการ 11: ในโครงการก่อนหน้านี้เราได้สร้างตัววิเคราะห์ไวยากรณ์สำหรับภาษาแจ็ค ในนี้เราจะแปรเปลี่ยนเครื่องวิเคราะห์นี้เป็นคอมไพเลอร์แจ็คเต็มรูปแบบ สิ่งนี้จะนำมาซึ่งการปรับเปลี่ยนตรรกะของเครื่องวิเคราะห์ที่สร้างรหัส XML เป็นตรรกะที่สร้างรหัส VM ที่ปฏิบัติการได้
- โครงการ 12: ระบบปฏิบัติการเป็นชุดของบริการซอฟต์แวร์ที่ออกแบบมาเพื่อปิดช่องว่างระหว่างโปรแกรมระดับสูงและฮาร์ดแวร์พื้นฐานที่พวกเขาทำงาน ภาษาสมัยใหม่เช่น Java และ Python ถูกนำไปใช้ร่วมกับไลบรารีคลาสมาตรฐานที่ใช้บริการระบบปฏิบัติการจำนวนมาก ในโครงการนี้เราจะพัฒนาระบบปฏิบัติการพื้นฐานที่จะบรรจุในชุดไลบรารีคลาสที่คล้ายกัน ระบบปฏิบัติการจะได้รับการพัฒนาในแจ็คโดยใช้กลยุทธ์ bootstrapping คล้ายกับวิธีที่ Linux ได้รับการพัฒนาใน C.