RISC-V是正當紅的指令集架構,
同時近年來有許多精巧且優秀的開源RISC-V simulator,
而筆者過去僅有使用或根據simulator現有框架進行修改的經驗,
未曾從無到有進行simulator的實作,也沒有過參與開源專案,
為此希望能透過這次鐵人賽,從目前常見的RISC-V simulator的介紹到透過C++實作。
最終目標為在實作出來的Simulator上並將Linux boot成功。
可能會使用到及介紹到的軟體:
Spike, Qemu, Gem5, BusyBox, SystemC, BuildRoot ....
為什麼要寫測試 在過去程式人員往往不負責測試,測試由專門的測試人員來負責。但近年來有人提倡測試驅動開發(Test-driven development TDD)...
ELF今天要來實作ELF Loader,那什麼是ELF呢,我們又為什麼要做ELF Loader呢?ELF指的是可執行與可鏈結格式(Executable and...
elf loader今天延續昨天的work,我們要來將elf loader的內容補完,根據昨天的內容,我們要有能力去判斷我們需要的是elf file內的哪一個c...
CPU流水線 CPU的五級架構,也稱為五級流水線,是一種用於提高中央處理器(CPU)性能的設計架構,它將指令的執行過程分為五個階段,以實現並行處理。以下是五級流...
指令的測試 在開始實現指令之前,我們一樣要來寫指令的測試。不過指令的測試其實是一件很不容易的事情,例如說我們今天要測試一道ADD指令,在RISC-V裡面的格式為...
RV64IMA_zifencei_zicsr 我們先來盤點一下總共要實作的指令有哪些,以及指令的格式有哪些。 在那之前推薦兩個好用的網站,在後續實作時幫助很大,...
今天要來實作R-type ALU,首先我們從RISC-V test裡面挑幾個來當成測資,由於步驟較為繁瑣,這邊簡單的以ADD為範例。 ADD Test /*IS...
昨天完成了R-Type的ALU,今天要來實作I-type。 I-type ALU I-type跟R-type的區別在於說R-type一個是以兩個暫存器內的值做運...
RISC-V CTRL INSN 好低,今天來實作CTRL指令。 CTRL指令指的是在程式運行過程中控制程式流程的指令,例如說像分支(branch),就是在你寫...
Load/Store指令 Load/Store指令是RISC-V中用來與記憶體互動的指令,又會根據每次讀取或寫入的大小,是否為有號數不同,分成"L/S...