在 Spike 模拟器中获取已执行指令的跟踪

问题描述 投票:0回答:1

请提供各种方法来使用 Spike 模拟器生成 C 代码执行指令的跟踪。

我创建了一个简单的“Hello World”C 文件并生成了 hello.elf,然后尝试运行此命令:

/home/vindhya/riscv-vector/riscv-isa-sim/build/spike -l /home/latitude-7390/rvv64/bin/riscv64-unknown-elf/bin/pk hello.elf

在 RISC-V 架构上运行“Hello World”C 程序后获得的输出似乎不寻常。程序执行显示了涉及内存加载和分支的重复 RISC-V 指令序列,而不是预期的简单输出。

哪里可能出了问题以及如何修复错误?

assembly profiling trace riscv spike-simulator
1个回答
0
投票

这实际上取决于您如何实现“Hello World”的打印以及程序是如何编译的。从代理内核 (

pk
) 的使用来看,您很可能已将您的程序静态链接到标准 C 库(例如
newlib
)。 C 库的初始化确实涉及不平凡的指令序列。您可以通过
objdump -d
您的 ELF 程序来验证这一点,并检查程序集。

© www.soinside.com 2019 - 2024. All rights reserved.