使用 C++23 从零实现 RISC-V 模拟器

👉🏻 文章汇总「从零实现模拟器、操作系统、数据库、编译器…」:https://okaitserrj.feishu.cn/docx/R4tCdkEbsoFGnuxbho4cgW2Yntc

使用 C++23 从零实现 RISC-V 模拟器

使用 C++23 从零实现的 RISC-V 模拟器,最终的模拟器可以运行 xv6 操作系统。

本教程参考了 Asami 所写的 Rust 版本的模拟器教程 ,但是原版只写了前三章。此外也参考了 Rare 对 rvemu 的改进 Rare 这也是一个 Rust 版本的并且已经完结了,对 rust 版本感兴趣的可以参考上面所给出对应的链接。

接下来我将会用 C++ 23 来实现,原则是即能用上的新特性全部都用上。以循序渐进的方式,最终实现一个可以运行 xv6 操作系统的 RISC-V 模拟器。此外重新组织了实现方式,一定程度上降低了难度梯度。

前置知识

假设读者学过 C 语言并且了解一点 C++ 的基本概念,即 C with class 水平即可。

对于 RISC-V 方面的知识可以参考下面的内容:

开发环境

  • Linux / Win(WSL) / MacOS

使用 docker 开发,其内部包含了一个 Ubuntu 20.04,其中用到了 riscv64-unknown-elf-gcc, 也可以用 clang 来编译。

lab0-start-code 分支是一个包含了 gtest 的启动代码。项目名称为 crvemu ,即 C++ RISC-V emulate 的缩写。

git clone --recurse-submodules https://github.com/weijiew/crvemu
cd crvemu && mkdir -p build && cd build
cmake .. && make -j $(nproc)
./crvemu
# Hello, World!

验证 gtest :

cmake .. && make -j $(nproc) && ./g_test

问题

如有任何问题,可以随时提 crvemu issue

👉🏻 文章汇总「从零实现模拟器、操作系统、数据库、编译器…」:https://okaitserrj.feishu.cn/docx/R4tCdkEbsoFGnuxbho4cgW2Yntc

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值