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
。
第二列82212
到82216
是当前循环数。
第三列[0]
或[1]
显示该指令是否提交了本次循环(即无异常完成)。
第四列pc=[...]
显示当前程序计数器值。
第五列W[r 8=...][1]
显示r
后缀中当前指令的目标寄存器,=
后写入该寄存器的值,以及是否这写入发生在 [0]
或 [1]
.
第六列R[r 8=...]
显示'r
后缀中第一个源寄存器的索引和=
后从该寄存器读取的值。
第七列与第六列相同,但用于第二个源寄存器。
第八列inst=[...]
显示当前指令中的位。
第九列也是最后一列显示了当前指令的反汇编。
当我在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
。
第二列82212
到82216
是当前循环数。
第三列[0]
或[1]
显示该指令是否提交了本次循环(即无异常完成)。
第四列pc=[...]
显示当前程序计数器值。
第五列W[r 8=...][1]
显示r
后缀中当前指令的目标寄存器,=
后写入该寄存器的值,以及是否这写入发生在 [0]
或 [1]
.
第六列R[r 8=...]
显示'r
后缀中第一个源寄存器的索引和=
后从该寄存器读取的值。
第七列与第六列相同,但用于第二个源寄存器。
第八列inst=[...]
显示当前指令中的位。
第九列也是最后一列显示了当前指令的反汇编。