嘉Jaykou工具台 RISC-V SIMULATOR 代码留在你的设备上
每日 免费 3 次

免费的 RISC-V 模拟器编写汇编代码,运行并观察每个寄存器。

使用带有标签和伪指令的 RV32IM 汇编,然后全速运行或逐条指令执行。
设置断点,后退,并在程序运行时观察寄存器、内存、机器代码和控制台。

100% 本地处理游客每日 3 次 · 无水印注册送 20 积分
游客每日 3 次 在你的浏览器中运行 无需安装
RV32I 汇编源码
机器码(每 4 字节一条)
0x1000: 00A00293
0x1004: 00000313
0x1008: 00530333
0x100c: FFF28293
0x1010: 80029463
0x1014: 00030513
0x1018: 00100893
0x101c: 00000073
0x1020: 00A00893
0x1024: 00000073
寄存器(非零)
(全部为 0)
状态
0x1000PC
0已执行指令
运行中状态
串口输出(ecall)
(还没有输出)
RISC-V 模拟器(RV32I 子集)
真实的 RV32I 编码 + 逐指令模拟。这里只实现了 RV32I 常用指令,没有 CSR、中断、乘除法(M 扩展)与虚拟内存。
汇编成功:10 条指令,共 40 字节。
已实现
add/sub/and/or/xor/sll/srl/sra/slt/sltu · addi/andi/ori/xori/slti/sltiu/slli/srli/srai · lw/lh/lb/lbu/lhu/sw/sh/sb · beq/bne/blt/bge/bltu/bgeu · jal/jalr/lui/auipc/ecall(a7=1 打印整数,a7=4 打印字符串,a7=10 退出)。
未实现:M/A/F/D 扩展、CSR、异常与中断、真实操作系统。
程序保存在当前浏览器中。下载即可留一份备份。
使用说明

RISC-V 模拟器怎么用?4 步就能上手

RISC-V 模拟器是一个在线编程环境:写代码、运行、看输出,不需要配置本地环境。 在浏览器中编写 RISC-V 汇编并运行:单步执行、后退、断点、寄存器、内存、控制台输入输出、十六进制机器码。

1
编写代码

在编辑器中输入或粘贴代码,支持语法高亮与自动缩进。

2
设置运行参数

选择语言版本、命令行参数或输入数据,按需调整。

3
运行

点击运行按钮,控制台会显示输出结果与错误信息。

4
保存或分享

确认结果后复制代码,或分享链接把示例发给别人。

· 代码在浏览器沙箱内运行,不会影响你的电脑。· 刷新页面会清空代码,重要代码记得先复制保存。

Tips for debugging assembly

Step back instead of restarting

Went one step too far? Step back undoes the last instructions, registers, memory and output included, so you can look again without running from the start.

Save ra before you call

call overwrites ra. A function that calls another must save ra on the stack first and restore it before ret, as in the factorial example.

Watch the Runs column

The machine code tab counts how often each instruction ran. A loop body that ran once too often or never ran points straight at a wrong branch.

嘉Jaykou工具台

这些也在你的浏览器里完成

无需注册即可试用,游客每日 3 次免费。所有处理都在你的设备上完成,文件不会被上传。

  • 490 个免费工具
  • 图片 · 视频 · PDF · 文本
  • 每日免费额度

所有工具每天都有免费额度。 游客每日 3 次免费,注册再送 20 积分。文件不上传,处理全在你的设备上完成。

RISC-V 模拟器常见问题解答

这个 RISC-V 模拟器是免费的吗?

是的。这个在线RISC-V模拟器是免费的,不需要账户,没有运行次数限制,也无需安装任何东西。

它支持哪些指令?

32位基础整数集(RV32I)、用于乘法、除法和取余的M扩展,以及对周期、时间和instret计数器的读取——这是计算机体系结构和汇编课程中教授的核心指令集。

我课程里的程序能在这里运行吗?

大多数会的。代码从 0x00400000 开始,数据从 0x10010000 开始,系统调用使用与常见教学模拟器相同的编号(a7 = 1 打印整数,4 打印字符串,5 读取整数,10 退出等等)。参考标签列出了它们所有。

我如何打印并读取输入?

将系统调用号放入 a7,将参数放入 a0,然后运行 ecall。当程序读取时,控制台会要求输入:输入内容并按回车。你也可以在程序要求之前提前输入。

周期是如何计算的?

指令计数是精确的。循环计数是针对简单顺序核心的估计:每条指令1个周期,每次加载2个周期,每次跳转或分支采取3个周期,每次乘法3个周期,每次除法33个周期。

我可以获得机器码吗?

是的。机器码标签显示每条指令的地址、十六进制数和解码形式。可以将其复制为十六进制,每行一个字,或者下载 .hex 或原始 .bin 文件。

为什么我的程序因为未对齐的访问而停止?

字必须在 4 的倍数地址上读取和写入,半字必须在 2 的倍数地址上。将 .align 2 放在字数据之前,或检查你计算的地址。错误会显示地址和所在行。

我可以后退吗?

是的。回退可以撤销最多最近的 4,096 条指令,包括寄存器、内存和输出,因此您可以在不从头开始运行的情况下找到错误。

我的代码上传了吗?

No. Assembling and running happen in your browser, and your program is saved in this browser's storage so it is still here next time.

免费工具

编写汇编代码,运行并观察每个寄存器

免费、私密,随时可用。

打开模拟器