Repolode
cvut

cvut/qtrvsim

基于 Qt 的 RISC-V CPU 模拟器,用于计算机体系结构教学,提供可在浏览器中运行的 WebAssembly 版本。

Star
651
Fork
97
未关闭 Issue
25
最近提交
9天前

这是什么?

QtRvSim 是一款面向计算机体系结构课程的图形化 RISC-V CPU 模拟器。它可以加载并运行静态链接的 32 位或 64 位小端序 ELF 可执行文件,并根据 ELF 头自动选择 XLEN。项目内置基础的集成汇编器,也可以调用外部 make 工具编译当前编辑的程序。

模拟器提供若干内存映射外设,包括 UART 串口、LED 与旋钮面板、RGB565 LCD 帧缓冲,以及 ACLINT 定时器和软件中断设备。它还实现了部分 CSR 寄存器与中断处理,并支持 read、write、openat、exit 等少量 Linux 系统调用,便于运行简单程序。

该项目由捷克技术大学计算机体系结构教育小组开发。WebAssembly 版本无需安装即可在浏览器中试用,但目前仍属实验性质。项目使用 CMake 构建,支持 Qt 5 和 Qt 6,部分 Linux 发行版也提供了二进制安装包。

核心功能

  • 01运行静态链接的 32 位和 64 位 RISC-V ELF 可执行文件。
  • 02内置基础集成汇编器,支持部分 GNU 汇编指令。
  • 03模拟 UART 串口、LED 与旋钮面板、LCD 帧缓冲和 ACLINT 定时器。
  • 04实现机器模式下常用的 CSR 寄存器和中断处理。
  • 05提供一组 Linux 系统调用,用于运行简单程序。
  • 06可通过 WebAssembly 版本在浏览器中直接使用。

适用场景

  • 在计算机体系结构课程中,用可视化的 CPU 模型讲解指令执行过程。
  • 演示 RISC-V 程序如何通过串口、中断和定时器与外设交互。
  • 在上板前,用模拟器测试由 GCC 或 Clang 编译的小型汇编或 C 程序。

快速上手

  1. 1

    克隆仓库及其子模块

    git clone --recurse-submodules https://github.com/cvut/qtrvsim.git
  2. 2

    在 Linux 上于项目根目录运行 make,使用封装的 Makefile 构建

    make
  3. 3

    或者无需安装,在浏览器中试用实验性的 WebAssembly 版本

使用前须知

  • 采用 GPL-3.0 许可证,这是一种 copyleft 许可证,衍生作品须以相同条款开源。
  • 尚不支持压缩指令(compressed instructions)。
  • WebAssembly 版本仍处于实验阶段。

标签

#risc-v#cpu-simulator#computer-architecture#teaching#emulator#webassembly#qt#cpu-emulator

常见问题

qtrvsim 是什么?
基于 Qt 的 RISC-V CPU 模拟器,用于计算机体系结构教学,提供可在浏览器中运行的 WebAssembly 版本。 QtRvSim 是一款面向计算机体系结构课程的图形化 RISC-V CPU 模拟器。它可以加载并运行静态链接的 32 位或 64 位小端序 ELF 可执行文件,并根据 ELF 头自动选择 XLEN。项目内置基础的集成汇编器,也可以调用外部 make 工具编译当前编辑的程序。
qtrvsim 可以免费使用吗?用的什么许可证?
qtrvsim 以 GPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
qtrvsim 还在维护吗?
活跃维护中。qtrvsim 最近一次提交是在 2026年10月29日。
qtrvsim 适合用来做什么?
在计算机体系结构课程中,用可视化的 CPU 模型讲解指令执行过程。 演示 RISC-V 程序如何通过串口、中断和定时器与外设交互。 在上板前,用模拟器测试由 GCC 或 Clang 编译的小型汇编或 C 程序。
qtrvsim 怎么安装和运行?
克隆仓库及其子模块: git clone --recurse-submodules https://github.com/cvut/qtrvsim.git 在 Linux 上于项目根目录运行 make,使用封装的 Makefile 构建: make 或者无需安装,在浏览器中试用实验性的 WebAssembly 版本
在哪里获取 qtrvsim?
源代码和安装说明在 GitHub 上:https://github.com/cvut/qtrvsim

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目