iT邦幫忙

鐵人檔案

2021 iThome 鐵人賽
回列表
Software Development

猴子都寫得出來的 RISC-V CPU Emulator 系列

有一隻猴子拿到了一本 RISC-V 指令集,
於是用 systemC 做出了一個具體而微的 CPU 模擬器。
如果時間允許的話就再加點 ONNC 吧。

參賽天數 2 天 | 共 31 篇文章 | 10 人訂閱 訂閱系列文 RSS系列文
DAY 2

RISC-V: ECALL/EBREAK 指令

進到了系統指令的環節,一樣先參考 RISC-V-TLM 和 exactstep 的做法,恩...一言難盡。 先從指令介紹開始吧! I-type 指令格式如下:...

2021-10-05 ‧ 由 hsufit 分享
DAY 2

RISC-V: R-type 算術指令

終於進到 R-type 指令了!指令實作已經有固定流程了,很單純,另外花了一點時間修改昨天的 Exception。 R-type 指令格式如下: |31...

2021-10-06 ‧ 由 hsufit 分享
DAY 2

RISC-V: R-type 位元運算指令

今天一樣是簡單的 AND、OR、XOR指令實作,多出來的時間就來還摸索期留下來的債,讓整個專案變得更完整和容易維護,這次補上 JUMP/BRANCH Excep...

2021-10-07 ‧ 由 hsufit 分享
DAY 2

RISC-V: R-type 小於指令

今天一樣是簡單的 SLT、SLTU 指令實作,並為了 Code Stream Logger 做準備,唯一有趣的是遇到 g++ 未實做的 feature 導致編譯...

2021-10-08 ‧ 由 hsufit 分享
DAY 2

RISC-V: R-type 位移指令

今天一樣是簡單的 SLL、SRL、SRA 指令實作,再一樣為了 Code Stream Logger 做準備,另外再加碼一個 run 過這份程式的人一定會發現的...

2021-10-09 ‧ 由 hsufit 分享
DAY 2

Logger: Code Stream Logger

指令的部分終於完結了!今天就來做 Logger 吧,目標是要有一致性和一定程度的可讀性,讓之後的 Code Stream 分析比較輕鬆。 RISC-V I 指令...

2021-10-10 ‧ 由 hsufit 分享
DAY 2

Program Loader

之前寫了一個很簡單的 Program Loader,現在就來真正的實作它,讓它能夠把編譯好的程式放到指定位置吧。主要參考對象是我們的老朋友:RISC-V-TLM...

2021-10-11 ‧ 由 hsufit 分享
DAY 2

Run HEX File 之 Debug 總集篇

今天就是 Debug 總集篇,前面都是用猴子自己瞎掰設計的 Code Stream 來驗證,這次終於能夠真的執行一個由 gcc 編譯出來的程式了! Debug開...

2021-10-13 ‧ 由 hsufit 分享
DAY 2

Hello World: 編譯環境建立

前兩天猴子先偷偷把之前編完的執行檔拿來驗證,今天來把 Cross Compiler 的部分補完。 有些夥伴沒接觸過嵌入式系統,可能不了解什麼是 Cross Co...

2021-10-13 ‧ 由 hsufit 分享
DAY 2

Hello: 真的哈囉

今天我想來點... Hello World!又是快樂 Debug 的好日子呢! 昨天已經把程式跑起來了,但又發現了很多奇怪的事情。HEX Format 每個欄位...

2021-10-14 ‧ 由 hsufit 分享