Столбцы трассировки команд с микросхемой Ракеты

Когда я бегу 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=[...] показывает биты в текущей инструкции.

Девятый и последний столбец показывает разборку текущей инструкции.

Другие вопросы по тегам