Skip to content
Published at:

附录 E. 工具与资源索引

从编写第一行 RISC-V 汇编到调试复杂系统,合适的工具能极大提高效率。本章汇总了在线工具、本地工具链、参考书单、官方规范和社区资源,供日常开发快速查找。


在线工具

模拟器与交互式环境

工具地址说明
RISC-V ALEhttps://riscv-programming.org/ale/在线 RISC-V 汇编学习环境,支持单步执行、寄存器/内存可视化
emulsiVhttps://eseo-tech.github.io/emulsiV/浏览器端 RISC-V 模拟器,支持五级流水线可视化
WebRISC-Vhttps://github.com/Mariotti94/WebRISC-V/流水线 RISC-V 模拟器,支持数据冒险和转发可视化
BRISC-V Simulatorhttps://ascslab.org/research/briscv/simulator/simulator.html另一款浏览器端 RISC-V 模拟器
Ripeshttps://github.com/mortbopet/RipesQt 桌面 RISC-V 模拟器,含流水线可视化(也支持 WebAssembly)

编译与编码工具

工具地址说明
Compiler Explorer (godbolt)https://godbolt.org/在线编译器比较工具,支持 RISC-V GCC/Clang,实时查看汇编输出
RISC-V Instruction Encoder/Decoderhttps://luplab.gitlab.io/rvcodecjs/在汇编助记符和机器码之间自由转换
RISC-V Opcode Maphttps://github.com/riscv/riscv-opcodes官方 opcode 定义文件和生成工具
RISC-V Reference Card (inst.eecs.berkeley.edu)https://inst.eecs.berkeley.edu/~cs61c/resources/su18_lec/Lecture7.pdf一页纸 RISC-V 指令速查卡片(PDF)

本地工具链安装

macOS

bash
# 方式一:Homebrew 安装预编译工具链
brew install riscv64-elf-gcc          # GCC 交叉编译器
brew install riscv64-elf-binutils     # 汇编器/链接器
brew install qemu                     # QEMU 模拟器(含 qemu-riscv64)

# 方式二:安装 Spike RISC-V ISA 模拟器
git clone https://github.com/riscv-software-src/riscv-isa-sim.git
cd riscv-isa-sim && mkdir build && cd build
../configure --prefix=/opt/riscv
make -j$(nproc) && make install

# 使用 Proxy Kernel (riscv-pk) 运行用户态程序
git clone https://github.com/riscv-software-src/riscv-pk.git
cd riscv-pk && mkdir build && cd build
../configure --prefix=/opt/riscv --host=riscv64-unknown-elf
make -j$(nproc) && make install

Linux (Debian/Ubuntu)

bash
# GCC 交叉工具链
sudo apt install gcc-riscv64-linux-gnu     # 用户态工具链
sudo apt install binutils-riscv64-linux-gnu
sudo apt install gcc-riscv64-unknown-elf   # 裸机工具链

# QEMU 模拟器
sudo apt install qemu-user-static          # 用户态模拟
sudo apt install qemu-system-riscv64       # 系统级模拟

# Spike + Proxy Kernel(从源码构建,参考 macOS 方式二)

验证安装

bash
# 测试交叉编译器
echo 'int main() { return 42; }' > test.c
riscv64-linux-gnu-gcc -static -o test test.c
qemu-riscv64 ./test
echo $?   # 应输出 42

# 测试汇编器
echo 'addi a0, x0, 0; ret' > test.S
riscv64-linux-gnu-gcc -c test.S -o test.o
riscv64-linux-gnu-objdump -d test.o

调试工具

工具说明
GDB for RISC-Vriscv64-unknown-elf-gdbriscv64-linux-gnu-gdb,支持 QEMU 远程调试
QEMU + GDBqemu-riscv64 -g 1234 ./program 启动 GDB stub,然后 target remote :1234
OpenOCD支持通过 JTAG 调试真实 RISC-V 硬件(如 SiFive 开发板)
objdumpriscv64-unknown-elf-objdump -d 反汇编 ELF 文件
readelfriscv64-unknown-elf-readelf -a 查看 ELF 头、段、符号表

GDB 常用调试命令

bash
# 基本调试流程
riscv64-linux-gnu-gdb ./program
(gdb) target remote :1234          # 连接 QEMU
(gdb) break main                   # 在 main 函数设断点
(gdb) continue                     # 继续运行
(gdb) stepi                        # 单步一条指令(进入函数)
(gdb) nexti                        # 单步一条指令(跳过函数调用)
(gdb) layout asm                   # 显示反汇编窗口
(gdb) layout regs                  # 显示寄存器窗口
(gdb) info registers               # 查看所有寄存器
(gdb) info registers a0 t0 ra sp   # 查看指定寄存器
(gdb) x/10i $pc                   # 查看 PC 附近 10 条指令
(gdb) x/4gx $sp                    # 查看栈顶 4 个 8 字节(十六进制)
(gdb) disassemble main             # 反汇编 main 函数
(gdb) p/x $a0                      # 以十六进制打印 a0
(gdb) set $a0 = 42                 # 修改寄存器值

官方规范与文档

文档说明链接
Unprivileged ISA Specification基础 ISA 和所有非特权扩展(M/A/F/D/C/V/Q)的权威规范https://github.com/riscv/riscv-isa-manual/releases
Privileged ISA Specification特权架构:Supervisor/Machine 模式、CSR、中断、虚拟内存https://github.com/riscv/riscv-isa-manual/releases
RISC-V ABI Specification (psABI)ELF 处理器特定 ABI 规范,包括 LP64 / LP64D / ILP32 调用约定https://github.com/riscv-non-isa/riscv-elf-psabi-doc
RISC-V ASM Manual汇编程序员手册(汇编器指令、伪指令、宏)https://github.com/riscv-non-isa/riscv-asm-manual
RISC-V Opcodes所有指令的机器码映射https://github.com/riscv/riscv-opcodes
devicetree.orgRISC-V 设备树绑定规范https://github.com/devicetree-org/dt-schema

推荐书籍

书名作者简介
The RISC-V Reader: An Open Architecture AtlasDavid Patterson, Andrew WatermanRISC-V 架构师亲自撰写的入门书,适合全面了解 ISA 设计理念
RISC-V Assembly Language ProgrammingStephen Smith手把手 RISC-V 汇编编程教程,含 Linux/嵌入式实例
Computer Organization and Design: RISC-V EditionDavid Patterson, John Hennessy经典计算机组成教材的 RISC-V 版本,"Patterson & Hennessy"的金字招牌
RISC-V Assembly LanguageAnthony J. Dos Reis从 C 语言到 RISC-V 汇编的循序渐进指南,适合学生
Linux Kernel RISC-V Port内核社区linux/arch/riscv/ 下的内核源码是学习系统级 RISC-V 编程的最佳参考

社区与学习资源

课程

资源说明链接
MIT 6.004 Computation StructuresMIT 数字电路与 CPU 设计公开课(使用 RISC-V)https://6004.mit.edu/
UC Berkeley CS61CUC Berkeley 计算机体系结构课程(RISC-V 教学 CPU)https://cs61c.org/
RISC-V LearnRISC-V 官方学习资源汇总https://github.com/riscv/learn

社区

社区说明链接
RISC-V InternationalRISC-V 基金会官方网站https://riscv.org/
RISC-V International Forum官方技术论坛(邮件列表存档)https://lists.riscv.org/
r/RISCV (Reddit)Reddit RISC-V 社区,活跃讨论硬件/软件/生态https://reddit.com/r/RISCV/
RISC-V 中文社区CNRV(中国 RISC-V 联盟)https://cnrv.io/
YouTube: RISC-V InternationalRISC-V 峰会和其他会议视频https://youtube.com/@RISCVInternational
riscv-stackexchangeStack Exchange RISC-V 问答https://stackoverflow.com/questions/tagged/riscv

GitHub 项目推荐

项目说明链接
riscv-tools官方工具链合集安装脚本https://github.com/riscv-software-src/riscv-tools
tinyemu (riscvemu)Fabrice Bellard 的轻量 RISC-V 模拟器(含 JS 版本)https://bellard.org/tinyemu/
xv6-riscvMIT 教学操作系统(xv6)的 RISC-V 移植版https://github.com/mit-pdos/xv6-riscv
riscv-rustRust 对 RISC-V 的支持生态https://github.com/rust-embedded/wg
Freedom E SDKSiFive Freedom 系列开发板 SDKhttps://github.com/sifive/freedom-e-sdk

快速参考卡片

以下是在日常编程时最有用的快速链接:

  1. 查指令语义:附录 A(RV64I)+ 附录 B(扩展)+ 官方手册
  2. 查寄存器 ABI:附录 D(寄存器 ABI)+ psABI 文档
  3. 查编码rvcodecjs 在线编码器
  4. 查伪指令:附录 C(伪指令速查表)
  5. 调试:GDB + QEMU 组合(参考上方调试命令)
  6. 看编译器输出Compiler Explorer 设置 -target riscv64
  7. 讨论与求助r/RISCV / Stack Overflow riscv 标签