NANDからTetrisまで - 最新のコンピューターを構築します

このレポは、Courseraで利用可能な2つのコースを指します。
- 最初の原則から最新のコンピューターを構築します:NANDからTetris(パートI)。
- 第一原則から最新のコンピューターを構築する:NANDからTetrisパートIIへ
ブール代数とロジックゲートから始めて、完全に機能的な汎用コンピューターで終了する、ゼロからコンピューターを構築するための自己ペースの旅をします。ハードウェアの抽象化について学び、自分で実装し、最終的に複雑なシステムを構築するスリルを体験します。各フォルダーには、割り当てに対する私自身のソリューションと私の個人的なメモが含まれています。
- プロジェクト1:基本的なロジックゲートのような、または、またはそうでない、マルチプレクサーの構築
- プロジェクト2:さまざまな加算チップと算術論理ユニット(ALU)の構築
- プロジェクト3:ビルディングレジスタ、メモリユニット、およびランダムアクセスメモリ(RAM)
- プロジェクト4:機械言語の学習と低レベルのプログラムの作成
- プロジェクト5:プロジェクト1-3のチップセットを使用して、中央処理装置(CPU)とプロジェクト4の機械言語でプログラムを実行できるハードウェアプラットフォームを構築する
- プロジェクト6:シンボリックマシン言語で記述されたプログラムをバイナリコードに翻訳するためのアセンブラーを開発します。
- プロジェクト7:このモジュールでは、スタックベースの仮想マシンの構築を開始します。仮想マシンアーキテクチャとそのVM言語(JavaのBytecodeに似ています)を提示した後、VMプログラムをハックマシン言語に変換するように設計された基本的なVM翻訳者(JavaのJVMに類似)を開発します。
- プロジェクト8:以前のモジュールでは、仮想マシンの抽象化を提示し、VM言語の算術およびメモリアクセスコマンドを実装する基本的なVM翻訳者を開発しました。このモジュールでは、残りのVM言語の分岐コマンドと関数を呼び出すコマンドを実装することにより、VM翻訳者を完了します。
- プロジェクト9:このモジュールでは、ジャックのプログラミングだけでなく、ジャック言語を紹介します。このモジュールは、ジャックを使用して、選択したシンプルなインタラクティブアプリケーションを開発するプロジェクトで頂点に達します。
- プロジェクト10:高レベルのプログラムの低レベルの言語への翻訳は、2つの明確に定義された多かれ少なかれ独立した段階で構成されています:構文分析とコード生成.syntax分析 - このモジュールの主題 - は、2つのサブステージで構成されています:語彙分析(トークン化とも呼ばれる)、および解析。結果のプロジェクトは、実行可能コードを生成せずにJackプログラムの構文を発表するプログラムであるJack Analyzerです。
- プロジェクト11:以前のプロジェクトでは、ジャック言語向けの構文分析装置を構築しました。これでは、この分析装置を本格的なジャックコンパイラに変換します。これには、XMLコードを生成するアナライザーのロジックを変更して、実行可能なVMコードを生成するロジックに変更する必要があります。
- プロジェクト12:オペレーティングシステムは、高レベルのプログラムとそれらが実行されている基礎となるハードウェアの間のギャップを閉じるように設計されたソフトウェアサービスのコレクションです。 JavaやPythonなどの最新の言語は、そのようなOSサービスの多くを実装する標準クラスライブラリとともに展開されます。このプロジェクトでは、同様のクラスライブラリセットにパッケージ化される基本的なOSを開発します。 OSは、LinuxがCで開発された方法と同様に、ブートストラップ戦略を使用してJackで開発されます。