2

当我make run-asm-tests在rocket-chip的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
4

1 回答 1

2

第一列C0:代表核心 0。如果您有多个核心,每个核心都将打印其自己的跟踪,前缀为hartid.

第二列是当前循环数8221282216

第三列[0]or[1]显示这条指令是否提交了这个周期(即没有异常地完成)。

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

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

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

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

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

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

于 2018-07-18T20:32:49.057 回答