在gem5 syscall仿真中,如何仅查看从main开始的C代码指令的执行过程?

问题描述

我对gem5感到疯狂。当我运行一个输出“ Hello,world”的程序时。仅在gem5中设置debug = Exec。我看到了数千行汇编指令的操作。如何只查看自己的代码的执行过程?

解决方法

是否正在运行ExecAll并启用ExecSymbol来显示当前函数名称足够好?例如。这样,我在main上看到的第一条指令是:

58852000: system.cpu: A0 T0 : 0x3fffd94f70 @__end__+274871107384    :   blr   x3                 : IntAlu :  D=0x0000003fffd94f74  flags=(IsInteger|IsControl|IsIndirectControl|IsUncondControl|IsCall)
58852500: system.cpu: A0 T0 : 0x4006f0 @main    : stp 

如果您真的不想在main之前记录说明,也可以进行第一次运行以确定main的开始时间戳(以上运行为58852500),然后使用:>

gem5.opt --debug-start=58852500

我不知道任何不需要初始运行即可确定时间戳的方法。在gem5中添加一些功能可以很酷,这是基于符号名进行的,这是我以前想要的。