You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QEMU全系统模拟RISC-V环境下追踪Jasper基准测试RISC-V指令的方法

QEMU RISC-V 程序指令追踪方案

下面给出两种适配你当前场景的实现方式,都只会输出原始RISC-V指令,不会包含翻译后的x86宿主机指令:

方法1:全系统QEMU追踪(适配你已搭建好的Debian RISC-V虚拟机环境)

  • 先关闭当前运行的RISC-V虚拟机,修改你平时启动QEMU的命令,追加如下参数:
    -d nochain,in_asm -D /home/你的WSL用户名/riscv_inst_trace.log
    
    参数说明:
    • in_asm:指定输出QEMU转换前的原始目标架构(即RISC-V)汇编指令
    • nochain:禁用QEMU的块链接优化,避免指令遗漏
    • -D:后面的路径为日志存储路径,该日志保存在WSL2宿主机上,而非虚拟机内部
  • 用修改后的命令重新启动虚拟机,按照你之前的步骤执行操作,直到完成jasper编码命令、确认输出文件生成后,关闭QEMU进程
  • 进入WSL2上的日志存储目录,执行如下命令过滤出纯RISC-V指令:
    grep -A1 '^IN:' riscv_inst_trace.log | grep -v '^--$' > pure_riscv_inst.log
    
    最终生成的pure_riscv_inst.log就是你需要的全部RISC-V指令记录

方法2:QEMU用户态单独追踪(无冗余指令,推荐优先使用)

全系统模式的日志会包含内核、其他后台进程的指令,冗余度高,用户态模式仅运行目标程序,只会输出jasper执行过程的指令:

  • 将RISC-V虚拟机中编译好的jasper可执行文件、测试图像input_base_4CIF.ppm拷贝到WSL2的任意目录中
  • 在WSL2对应目录下执行如下命令:
    qemu-riscv64 -d nochain,in_asm -D jasper_riscv_trace.log -L /usr/riscv64-linux-gnu ./jasper -f ./input_base_4CIF.ppm -F ./output_base_4CIF_96bps.jp2 -T jp2 -O rate=0.010416667
    
    参数说明:-L指定RISC-V架构动态库的根搜索路径,默认安装QEMU RISC-V用户态组件后该路径可用
  • 命令执行完成后,直接按方法1的过滤命令处理日志,即可得到jasper程序对应的全部RISC-V指令

可选补充

如果需要同时记录每条指令执行前后的寄存器值,可以在-d参数后追加cpu选项,即-d nochain,in_asm,cpu,日志会同步输出寄存器状态信息。


内容的提问来源于stack exchange,提问作者Thomaz Assaf Pougy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:45:01