当我在火箭芯片的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
答案 0 :(得分:2)
第一列C0:
代表核心0。如果您有多个核心,则每个核心都会打印自己的跟踪,并以其hartid
开头。
第二列82212
至82216
是当前循环号。
第三列[0]
或[1]
显示该指令是否已执行此周期(即无异常结束)。
第四列pc=[...]
显示当前程序计数器值。
第五列W[r 8=...][1]
在r
的后缀中显示当前指令的目标寄存器,在=
之后写入该寄存器的值以及该写入是否为发生在[0]
或[1]
中。
第六列R[r 8=...]
显示后缀'r
中第一个源寄存器的索引以及在=
之后从该寄存器读取的值。
第七列与第六列相同,只是第二个源寄存器。
第八列inst=[...]
显示当前指令中的位。
第九列也是最后一列显示了当前指令的反汇编。