使用 C++23 从零实现 RISC-V 模拟器
从 CPU 取指到特权级与虚拟内存,25 个可测试微章节,最终启动 xv6。 现代 C++23 写法、TDD 与工程化模板一体交付,可直接在团队复用。
周期
约 1–3 周·自定进度
节奏
按任务拆分的 workshop 节奏
章节
5 大阶段 · 25 微章节
交付
完整模拟器 + xv6 启动
适用场景
体系结构进阶、OS/编译实验、教学演示、团队内系统编程基线建设。
Outcomes
你将收获
用 C++23 构建可运行 xv6 的 RV64 模拟器,掌握从取指到特权级的全链路细节
以 TDD 驱动指令与模块落地,沉淀可维护的测试与基准套件
构建可调试、可观测的系统:反汇编、寄存器 dump、日志与性能剖析
实现 MMU + Sv39,打通虚拟内存与特权级切换,支撑多阶段 OS 启动
交付可复用的系统编程脚手架(CMake、Docker、CI、GTest、格式化与静态检查)
Program Highlights
课程特色
Modern C++,心智轻量
用 std::format / std::span / enum class 等现代特性,控制复杂度;避免过度模板元编程。
全链路 TDD
每条指令、每个模块都有测试先行,Google Test + 基准测试保障正确性与回归。
闭环工程化
CMake + Docker + CI,覆盖 lint/format/单测/基准;提供复用模板可直接带回团队。
可视化调试
自带反汇编与寄存器/内存观察工具,减少“盲人摸象”式调试。
Roadmap
五大阶段 · 25 微章节
跑通第一条 ADDI,拥有最小可运行 CPU。
第一部分:创世纪 · CPU 的诞生 (Ch 1-6)
环境与 Hello World:C++23 / CMake / Docker,建立 CI 观念;C++ 急救包
内存模型:DRAM 字节数组 + Load/Store,位运算特训
总线 Bus:隔离 CPU 与 DRAM,抽象读写接口
核心状态:PC 与 32 个通用寄存器,理解 x0 不可写
取指与译码:完成 Opcode 解析
执行 MVP:实现 ADDI,打通首个测试
完成 RV64I 核心指令集与基础工具链。
第二部分:图灵完备 · 指令集填充 (Ch 7-12)
调试基础设施:反汇编器、寄存器 dump
算术与逻辑:ADD/SUB/AND/OR/XOR 等 ALU 指令
访存:LB/LH/LW/LD 及对应 Store,符号扩展处理
分支跳转:BEQ 等相对寻址,PC 计算
栈与函数调用:JAL/JALR,模拟函数栈帧
裸机验证:运行复杂 C 逻辑,验证指令完备性
实现 M-Mode,正确处理异常与中断。
第三部分:特权模式 · 内核的权利 (Ch 13-17)
CSR 读写:mstatus/mie/mtvec 等关键寄存器
CSR 指令:CSRRW/CSRRS/CSRRC
同步异常:ecall 与 illegal instruction 的捕获与返回
CLINT Timer:mtime/mtimecmp,定时器驱动
异步中断:触发、挂起与 mret 流程
实现监管者模式与虚拟内存 Sv39。
第四部分:虚拟化 · 内存的魔法 (Ch 18-21)
S-Mode 与异常委托:sstatus 等寄存器接入
虚拟内存理论:PTE 解析与 VA->PA 翻译
MMU 集成:Bus 透明地址转换,含 SFENCE.VMA
UART 设备:MMIO 串口,为 Shell 做准备
加载并运行 xv6,进入 Shell。
第五部分:终局 · 启动 xv6 (Ch 22-25)
Bootloader:ELF 解析与内核加载
设备树 FDT:生成并传递硬件配置
启动调试:处理 AMO 与初始化早期 crash
Hello, xv6 Shell:成功运行 ls,验证完整链路
Deliverables
交付物与模板
可运行 xv6 的 RV64 模拟器代码仓库(含单测与基准)
反汇编 / Dump 工具与日志体系,便于调试与教学
CMake + Docker + CI 模板,含格式化、静态检查与测试脚本
学习与复盘文档,记录关键决策与性能数据,便于团队共享
Audience
适合人群
有 1-3 年 C/C++ 背景,想深入体系结构与系统编程
正在学习编译原理/OS,希望有可控的实验底座来跑代码
需要在团队内推广可复用的系统脚手架与工程规范
我们会先了解你的背景与目标
对齐技术栈、时间与期望产出,再给出个性化路线与席位确认方式。
Prerequisites
前置知识
熟悉 C++ 基础语法与简单模板
理解二进制与基础 CPU 结构(寄存器/内存/总线概念)
开发环境:Linux/macOS;Windows 建议 WSL2
References
参考资料
Next Step
想要课程大纲、价格或开班时间?
扫描右侧二维码添加微信,备注「RISC-V 课程」,获取大纲、价格与开班时间。
微信扫码添加 · 备注「RISC-V 课程」