nand2tetris 項目有一本書叫《計算機系統要素》,也有英語的視頻教程。若是英語很差的能夠看書,內容是同樣的。html
這本書主要講解了計算機原理(1-6章)、編譯原理(7-11章)、操做系統相關知識(12章)。不要看內容這麼多,其實這本書的內容很是通俗易懂,翻譯也很給力。每一章背後都有對應的練習,須要你手寫代碼去完成,堪稱理論與實踐結合的經典。git
這裏引用一下書裏的內容簡介,你們能夠感覺一下。github
本書經過展示簡單但功能強大的計算機系統之構建過程,爲讀者呈現了一幅完整、嚴格的計算機應用科學大圖景。本書做者認爲,理解計算機工做原理的最好方法就是親自動手,從零開始構建計算機系統。
經過12個章節和項目來引領讀者從頭開始,本書逐步地構建一個基本的硬件平臺和現代軟件階層體系。在這個過程當中,讀者可以得到關於硬件體系結構、操做系統、編程語言、編譯器、數據結構、算法以及軟件工程的詳實知識。經過這種逐步構造的方法,本書揭示了計算機科學知識中的重要成分,並展現其它課程中所介紹的理論和應用技術如何融入這幅全局大圖景當中去。
全書基於「先抽象再實現」的闡述模式,每一章都介紹一個關鍵的硬件或軟件抽象,一種實現方式以及一個實際的項目。完成這些項目所必要的計算機科學知識在本書中都有涵蓋,只要求讀者具有程序設計經驗。本書配套的支持網站提供了書中描述的用於構建全部硬件和軟件系統所必需的工具和資料,以及用於12個項目的200個測試程序。
全書內容普遍、涉獵全面,適合計算機及相關專業本科生、研究生、技術開發人員、教師以及技術愛好者參考和學習。
並且,這本書的門檻很是低,只要你能熟練運用一門編程語言便可。算法
本書從與非門開始教你一步步構建一個完整的計算機(1-6章);從第 7 章開始一直到第 11 章,須要完成三個編譯器(彙編編譯器、VM 編譯器、Jack 語言編譯器);最後一章則須要完成操做系統部分功能。編程
若是你完成了本書全部的項目,則會得到如下成就:網絡
我已經把這本書全部項目都完成了,耗時兩個月(天天 3 小時)。答案放在 github 上,還創建了一個 QQ 交流羣,若是有不懂的能夠加羣裏探討一下。數據結構
這個項目是 MIT 大學開源的一個操做系統課程,官網是 https://pdos.csail.mit.edu/6....。該項目主要有如下幾個優勢:編程語言
只要你跟着項目走,從 Lab1 開始,一步一步的作到 Lab6,就能實現一個簡單的操做系統內核。如下是 6 個實驗的內容簡介:工具
不過這個項目比起 nand2tetris 要難,門檻較高。若是沒什麼基礎的話,建議作這個項目以前先看看下列資料:學習
這個項目也花了兩個月才完成,不過只作了 Lab1-6 實驗,挑戰任務和家庭做業都沒作。答案放在 github 上,有興趣能夠看看。