Rare項目の翻訳スタート
今、私は「Rare」というプロジェクトの翻訳を準備しています。Rareは、Risc-Vのエミュレーターを実装しているプロジェクトで、元の作者であるAsamiさんは日本のコンピューター教授だと思われます。以前、Githubで彼女のこのチュートリアルを見かけましたが、コードはすでに分割されているものの、チュートリアルは一部しか書かれていませんでした。Risc-Vにとても興味があるため、彼女のコードをテンプレートとして、一歩一歩チュートリアルを補完していこうと思っています。他の学習者の助けになれば幸いです。
本チュートリアルは、Asamiさんが書かれたエミュレーターのチュートリアルに基づいています。著者は第3章までしか書いていませんが、彼女は事前にすべてのコードを10章に分けてあります。そのため、コードを見ながらでも、一歩一歩このエミュレーターを構築することができます。
最終的なエミュレーターは、xv6オペレーティングシステムを実行できるようになります。
私の計画は、彼女のコードとチュートリアルに従って一歩一歩このエミュレーターを作成し、その後、完全な中国語(今は日本語です)のチュートリアルシリーズを作成して説明することです。このチュートリアルは、原作と同様にmdbookを使って構築します。
プロジェクトのアドレス:Github Rare
オンラインチュートリアル:Github.io Rare
前置き
本チュートリアルでは、読者がRustとRISC-Vについてある程度の理解があることを前提としています。そのため、チュートリアル内ではRustやRISC-Vについての詳細な説明は行わず、シミュレーター自体に集中します。RISC-Vについて理解を深めるために、以下の資料を読むことをお勧めします。
Rustに関しては、環境をインストールした後、rustup docsを実行することで、The BookやRustのドキュメントにアクセスできます。
開発環境
テスト用のバイナリファイルを生成するために、clangツールを使用する必要があります。LLVMの公式サイトから、事前にコンパイルされたバージョンをダウンロードできます。私が使用しているバージョンはclang-12ですが、更新されたバージョンでも問題ありません。
推奨される使用方法
このプロジェクトをローカルにクローンします。
cd Rare/book && mdbook serve コマンドでローカルチュートリアルを開きます。
必要に応じて、git pullで更新します。
ディレクトリ
Adder(加算器)
Memory and Bus(メモリとバス)
Control Status Register(制御ステータスレジスタ)
Privilege Mode(特権モード)
Exception(例外)
PLIC & CLINT
UART
Interrupt(割り込み)
Virtio
Page Table(ページテーブル)
元の作者はハードウェアとISA命令セットの2つの部分に分けていましたが、私はそれを1つに統合した方が適切だと考えたため、統合しました。