Merge pull request #1 from hovara/main

Improved regdump
This commit is contained in:
Alexandru-Florin Ene
2023-10-15 17:00:25 +03:00
committed by GitHub

View File

@@ -4,13 +4,68 @@
#include <assert.h> #include <assert.h>
#include "tinyriscv.h" #include "tinyriscv.h"
typedef enum{
RESET = 0, DEFAULT = 39,
BLACK = 30, BRIGHT_BLACK = 90,
RED = 31, BRIGHT_RED = 91,
GREEN = 32, BRIGHT_GREEN = 92,
YELLOW = 33, BRIGHT_YELLOW = 93,
BLUE = 34, BRIGHT_BLUE = 94,
MAGENTA = 35, BRIGHT_MAGENTA = 95,
CYAN = 36, BRIGHT_CYAN = 96,
WHITE = 37, BRIGHT_WHITE = 97
}Color;
static inline void set_color(const Color color){
printf("\033[%dm", color);
}
void regdump(const trv_cpu* cpu){ void regdump(const trv_cpu* cpu){
printf("pc = 0x%.8x\n\n", cpu->pc); printf("\n ABI Reg Hex │ ABI Reg Hex\n");
printf("────────────────────┼───────────────────\n");
for(unsigned int i = 0; i < 32; i++){ for(unsigned int i = 0; i < 32; i++){
printf("r%.2d = 0x%.8x\t", i, cpu->regs[i]); printf(" ");
if(i % 2) printf("\n"); switch(i){
case 0: printf("zero "); break; case 1: printf("ra "); break;
case 2: printf("sp "); break; case 3: printf("gp "); break;
case 4: printf("tp "); break; case 5: printf("t0 "); break;
case 6: printf("t1 "); break; case 7: printf("t2 "); break;
case 8: printf("s0/fp"); break; case 9: printf("s1 "); break;
case 10: printf("a0 "); break; case 11: printf("a1 "); break;
case 12: printf("a2 "); break; case 13: printf("a3 "); break;
case 14: printf("a4 "); break; case 15: printf("a5 "); break;
case 16: printf("a6 "); break; case 17: printf("a7 "); break;
case 18: printf("s2 "); break; case 19: printf("s3 "); break;
case 20: printf("s4 "); break; case 21: printf("s5 "); break;
case 22: printf("s6 "); break; case 23: printf("s7 "); break;
case 24: printf("s8 "); break; case 25: printf("s9 "); break;
case 26: printf("s10 "); break; case 27: printf("s11 "); break;
case 28: printf("t3 "); break; case 29: printf("t4 "); break;
case 30: printf("t5 "); break; case 31: printf("t5 "); break;
}
printf(" ");
set_color(BRIGHT_YELLOW);
printf(i < 10 ? "x%d " : "x%d", i);
set_color(RESET);
printf(" ");
if(cpu->regs[i]) set_color(BRIGHT_GREEN);
printf("%-8x", cpu->regs[i]);
set_color(RESET);
printf(i % 2 ? " \n" : "");
} }
printf(" pc ");
set_color(BRIGHT_YELLOW);
printf("x32");
if(cpu->pc) set_color(BRIGHT_GREEN);
printf(" %-8x", cpu->pc);
set_color(RESET);
printf("\n\n");
} }
void help(void){ void help(void){