從NAND到Tetris-製造現代計算機

此回購是指Coursera上的兩個課程:
- 構建一台現代計算機,從第一原理:從NAND到Tetris(第一部分)。
- 製造一台現代計算機,從第一原理:NAND到Tetris第二部分
您將從從布爾代數和邏輯大門開始,以一台功能齊全的通用計算機結束,從頭開始構建一台計算機,從而進行自節奏的旅程。您將了解硬件抽象,自己實施它們,並最終體驗到建立復雜系統的快感。每個文件夾都包含我對作業和個人筆記的解決方案:
- 項目1:構建基本邏輯門,例如和或,或,不和多路復用器
- 項目2:建造一系列加法芯片和算術邏輯單元(ALU)
- 項目3:建築寄存器,內存單元和隨機訪問存儲器(RAM)
- 項目4:學習機器語言並編寫低級程序
- 項目5:使用項目1-3的芯片組來構建中央處理單元(CPU)和一個能夠從項目4中運行機器語言程序的硬件平台
- 項目6:開發一個彙編器,將用符號機器語言寫入的程序轉換為二進制代碼。
- 項目7:在此模塊中,我們開始構建基於堆棧的虛擬機。在介紹了虛擬機體系結構及其VM語言(類似於Java的字節碼)之後,我們開發了一個基本的VM Translator(類似於Java的JVM ),旨在將VM程序轉換為Hack Machine語言。
- 項目8:在上一個模塊中,我們提出了一個虛擬機抽象,並開發了一個基本的VM轉換器,該轉換器實現了VM語言的算術和內存訪問命令。在此模塊中,我們將通過實現其餘VM語言的分支和功能稱呼命令來完成VM轉換器。
- 項目9:在此模塊中,我們介紹了傑克語言以及插孔編程。該模塊最終使用Jack在一個項目中開發了您選擇的簡單交互應用。
- 項目10:將高級程序轉換為低級語言由兩個定義明確且或多或少獨立的階段組成:語法分析和代碼生成。 Syntax分析 - 該模塊的主題 - 由兩個子階段組成:詞彙分析(也稱為sokenization )和解析。最終的項目將是一個Jack Analyzer-一個程序,該程序在不生成可執行代碼的情況下揭示了插孔程序的語法。
- 項目11:在上一個項目中,我們為傑克語言構建了語法分析儀。在此,我們將將該分析儀變成一個全面的傑克編譯器。這將需要修改分析儀的邏輯,該邏輯將XML代碼生成可執行VM代碼的邏輯。
- 項目12:操作系統是軟件服務的集合,旨在彌合高級程序與運行的基礎硬件之間的差距。 Java和Python等現代語言與實施許多此類操作系統服務的標準類庫一起部署。在這個項目中,我們將開發一個基本操作系統,該操作系統將包裝在類似的類庫中。 OS將在Jack中使用自舉策略開發,類似於C中的Linux。