返回付费课程总览
Flagship Workshop

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

从 CPU 取指到特权级与虚拟内存,25 个可测试微章节,最终启动 xv6。 现代 C++23 写法、TDD 与工程化模板一体交付,可直接在团队复用。

周期

约 1–3 周·自定进度

节奏

按任务拆分的 workshop 节奏

章节

5 大阶段 · 25 微章节

交付

完整模拟器 + xv6 启动

进阶计划
TDD
逐指令实现与测试,掌握执行链路
反汇编、Dump、日志与观测工具齐全
模块化分层:CPU / Bus / MMU / Devices
最终目标:成功启动 xv6,并进入 Shell

适用场景

体系结构进阶、OS/编译实验、教学演示、团队内系统编程基线建设。

Outcomes

你将收获

用 C++23 构建可运行 xv6 的 RV64 模拟器,掌握从取指到特权级的全链路细节

以 TDD 驱动指令与模块落地,沉淀可维护的测试与基准套件

构建可调试、可观测的系统:反汇编、寄存器 dump、日志与性能剖析

实现 MMU + Sv39,打通虚拟内存与特权级切换,支撑多阶段 OS 启动

交付可复用的系统编程脚手架(CMake、Docker、CI、GTest、格式化与静态检查)

Program Highlights

课程特色

Highlight

Modern C++,心智轻量

用 std::format / std::span / enum class 等现代特性,控制复杂度;避免过度模板元编程。

Highlight

全链路 TDD

每条指令、每个模块都有测试先行,Google Test + 基准测试保障正确性与回归。

Highlight

闭环工程化

CMake + Docker + CI,覆盖 lint/format/单测/基准;提供复用模板可直接带回团队。

Highlight

可视化调试

自带反汇编与寄存器/内存观察工具,减少“盲人摸象”式调试。

Roadmap

五大阶段 · 25 微章节

1

跑通第一条 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,打通首个测试

2

完成 RV64I 核心指令集与基础工具链。

第二部分:图灵完备 · 指令集填充 (Ch 7-12)

调试基础设施:反汇编器、寄存器 dump

算术与逻辑:ADD/SUB/AND/OR/XOR 等 ALU 指令

访存:LB/LH/LW/LD 及对应 Store,符号扩展处理

分支跳转:BEQ 等相对寻址,PC 计算

栈与函数调用:JAL/JALR,模拟函数栈帧

裸机验证:运行复杂 C 逻辑,验证指令完备性

3

实现 M-Mode,正确处理异常与中断。

第三部分:特权模式 · 内核的权利 (Ch 13-17)

CSR 读写:mstatus/mie/mtvec 等关键寄存器

CSR 指令:CSRRW/CSRRS/CSRRC

同步异常:ecall 与 illegal instruction 的捕获与返回

CLINT Timer:mtime/mtimecmp,定时器驱动

异步中断:触发、挂起与 mret 流程

4

实现监管者模式与虚拟内存 Sv39。

第四部分:虚拟化 · 内存的魔法 (Ch 18-21)

S-Mode 与异常委托:sstatus 等寄存器接入

虚拟内存理论:PTE 解析与 VA->PA 翻译

MMU 集成:Bus 透明地址转换,含 SFENCE.VMA

UART 设备:MMIO 串口,为 Shell 做准备

5

加载并运行 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

Next Step

想要课程大纲、价格或开班时间?

扫描右侧二维码添加微信,备注「RISC-V 课程」,获取大纲、价格与开班时间。

微信二维码

微信扫码添加 · 备注「RISC-V 课程」