Столбцы трассировки команд с микросхемой Ракеты
Когда я бегу 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 ответ
Первый столбец C0:
обозначает ядро 0. Если у вас несколько ядер, каждое из них напечатает свою собственную трассировку с префиксом hartid
,
Второй столбец 82212
через 82216
номер текущего цикла.
Третий столбец [0]
или же [1]
показывает, была ли эта инструкция совершена в этом цикле (т.е. завершена без исключений).
Четвертый столбец pc=[...]
показывает текущее значение счетчика программы.
Пятая колонна W[r 8=...][1]
показывает регистр назначения текущей инструкции в суффиксе r
значение записывается в этот регистр после =
и происходит ли эта запись в [0]
или же [1]
,
Шестая колонна R[r 8=...]
показывает индекс первого исходного регистра в суффиксе 'r
и значение, считанное из этого регистра после =
,
Седьмой столбец такой же, как шестой, но для второго исходного регистра.
Восьмая колонна inst=[...]
показывает биты в текущей инструкции.
Девятый и последний столбец показывает разборку текущей инструкции.