CPU指令可以分成兩大類,一是操作CPU內部暫存器的算術邏輯指令,一是存取記憶體,也就是所謂的load/store指令。要模擬算術邏輯指令,用先前所定義的Cor...
本文目標 學習 RV32I 進入正題 RV32I 是 32-bit 的基本整數指令集,該指令集會使用到 32 個暫存器 (x0-x31),且一共有 47 道...
其實RISC-V官方也有開發了一個instruction accurate等級的模擬器Spike,只是主要以C++撰寫。從提交紀錄看起來,這個模擬器已經開發超過...
有了基本檔案架構後,開始動工指令的部分。RISC-V將指令分成數個子集,其中包括RV32I、RV32E、RV64I、RV128I四套整數指令集,以及約14套擴充...
使用Spike執行RISC-V gnu toolchain編譯出來的ELF檔,就可以得到完整執行此EFL檔需要用到哪些指令。利用script統計後可以得到如下結...
基本的安裝以及相關資源已經整理在上篇文章: RISC-V on Rust 從零開始(1) - 安裝 Rust 環境 材料已經備齊,該是動工的時候,Rust許多語...
這次要實作的是 RISC-V 的核心基本架構。RISC-V提供了32個integer register用作基本的算術邏輯運算,如下圖: 以 Rust 的stru...
這次要來實作指令decoder,負責pipeline中的decode stage。計組教科書上常見的pipeline架構依序為:fetch、decode、exe...
在實際的硬體上,開機後執行的第一道指令已經燒錄在ROM上面,對於CPU來說程式在開機時就已經位於位址空間的某處,但對於我們的模擬器來說,開機後的記憶體是一片空白...
這次要來談的是Rust的測試框架,並且重新調整目錄架構。 撰寫測試 Rust本身就自帶測試框架,無須安裝額外library,這邊直接把上次所寫的main改寫成t...
RISC-V CTRL INSN 好低,今天來實作CTRL指令。 CTRL指令指的是在程式運行過程中控制程式流程的指令,例如說像分支(branch),就是在你寫...