Rocket-chip 指令跟踪列

Rocket-chip instruction trace columns

当我在rocket-chip的emulator目录下运行make run-asm-tests时,在emulator/output目录下得到一堆*.out文件。这些似乎是指令跟踪,但未标记列。我想知道每一列的含义。谢谢!

例如:

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

第一列 C0: 代表核心 0。如果你有多个核心,每个核心都会打印自己的轨迹,前缀为 hartid

第二列8221282216是当前循环数。

第三列[0][1]显示该指令是否提交了本次循环(即无异常完成)。

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

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

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

第七列与第六列相同,但用于第二个源寄存器。

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

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