火箭芯片指令跟踪列

时间:2018-07-18 20:18:29

标签: riscv rocket-chip

当我在火箭芯片的make run-asm-tests目录中运行emulator时,我在*.out目录中获得了emulator/output个文件。这些似乎是指令跟踪,但没有标记列。我想知道每个列的含义。谢谢!

例如:

C0:      82212 [0] pc=[000000081c] W[r 0=0000000000000400][0] R[r 8=0000000000000000] R[r 0=0000000000000000] inst=[40044403] lbu     s0, 1024(s0)
C0:      82213 [0] pc=[000000081c] W[r 0=0000000000000400][0] R[r 8=0000000000000000] R[r 0=0000000000000000] inst=[40044403] lbu     s0, 1024(s0)
C0:      82214 [1] pc=[0000000820] W[r 8=0000000000000000][1] R[r 8=0000000000000000] R[r 3=0000000000000003] inst=[00347413] andi    s0, s0, 3
C0:      82215 [1] pc=[0000000824] W[r 0=0000000000000000][0] R[r 8=0000000000000000] R[r 0=0000000000000000] inst=[fe0408e3] beqz    s0, pc - 16
C0:      82216 [1] pc=[0000000814] W[r 8=0000000000000000][1] R[r 0=0000000000000000] R[r20=0000000000000003] inst=[f1402473] csrr    s0, mhartid

1 个答案:

答案 0 :(得分:2)

第一列C0:代表核心0。如果您有多个核心,则每个核心都会打印自己的跟踪,并以其hartid开头。

第二列8221282216是当前循环号。

第三列[0][1]显示该指令是否已执行此周期(即无异常结束)。

第四列pc=[...]显示当前程序计数器值。

第五列W[r 8=...][1]r的后缀中显示当前指令的目标寄存器,在=之后写入该寄存器的值以及该写入是否为发生在[0][1]中。

第六列R[r 8=...]显示后缀'r中第一个源寄存器的索引以及在=之后从该寄存器读取的值。

第七列与第六列相同,只是第二个源寄存器。

第八列inst=[...]显示当前指令中的位。

第九列也是最后一列显示了当前指令的反汇编。