Added 'trace' option
This commit is contained in:
		@@ -676,8 +676,11 @@ void cpu_loop(rv32_cpu_t* cpu)
 | 
				
			|||||||
		instruction_t instruction;
 | 
							instruction_t instruction;
 | 
				
			||||||
		cpu_decode(raw_instruction, &instruction);
 | 
							cpu_decode(raw_instruction, &instruction);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		printf("0x%x: ", cpu->pc);
 | 
							if(trace)
 | 
				
			||||||
		cpu_print_instruction(&instruction);
 | 
							{
 | 
				
			||||||
 | 
								printf("0x%x: ", cpu->pc);
 | 
				
			||||||
 | 
								cpu_print_instruction(&instruction);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Execute
 | 
							// Execute
 | 
				
			||||||
		cpu_execute(cpu, &instruction);
 | 
							cpu_execute(cpu, &instruction);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								src/option.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/option.c
									
									
									
									
									
								
							@@ -8,6 +8,7 @@
 | 
				
			|||||||
uint64_t memory_size = 512 * 1024 * 1024;
 | 
					uint64_t memory_size = 512 * 1024 * 1024;
 | 
				
			||||||
char* file_path;
 | 
					char* file_path;
 | 
				
			||||||
bool gdbstub = false;
 | 
					bool gdbstub = false;
 | 
				
			||||||
 | 
					bool trace = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void print_usage();
 | 
					static void print_usage();
 | 
				
			||||||
static void print_help();
 | 
					static void print_help();
 | 
				
			||||||
@@ -100,6 +101,11 @@ void parse_options(int argc, char** argv)
 | 
				
			|||||||
					gdbstub = true;
 | 
										gdbstub = true;
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
									case 't':
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										trace = true;
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
				default:
 | 
									default:
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					fprintf(stderr, "Error: Unknown short option -%c\n", argv[i][k]);
 | 
										fprintf(stderr, "Error: Unknown short option -%c\n", argv[i][k]);
 | 
				
			||||||
@@ -161,6 +167,11 @@ static int parse_long_option(char* str, char* argq)
 | 
				
			|||||||
		gdbstub = true;
 | 
							gdbstub = true;
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						else if(strcmp(str, "trace") == 0)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							trace = true;
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		fprintf(stderr, "Error: Unknown long option " OPTION_SEPARATOR OPTION_SEPARATOR "%s\n", str);
 | 
							fprintf(stderr, "Error: Unknown long option " OPTION_SEPARATOR OPTION_SEPARATOR "%s\n", str);
 | 
				
			||||||
@@ -181,6 +192,7 @@ static void print_help()
 | 
				
			|||||||
	printf("  " OPTION_SEPARATOR "h, " OPTION_SEPARATOR "?, --help\t\tPrint this help message\n");
 | 
						printf("  " OPTION_SEPARATOR "h, " OPTION_SEPARATOR "?, --help\t\tPrint this help message\n");
 | 
				
			||||||
	printf("  " OPTION_SEPARATOR "v, --version\t\t\tPrint version information\n");
 | 
						printf("  " OPTION_SEPARATOR "v, --version\t\t\tPrint version information\n");
 | 
				
			||||||
	printf("  " OPTION_SEPARATOR "m, --memory\t\t\tSet the simulated memory size, in MiB (max 4096)\n");
 | 
						printf("  " OPTION_SEPARATOR "m, --memory\t\t\tSet the simulated memory size, in MiB (max 4096)\n");
 | 
				
			||||||
 | 
						printf("  " OPTION_SEPARATOR "t, --trace\t\t\tTrace executed instructions in stdout\n");
 | 
				
			||||||
	printf("  " OPTION_SEPARATOR "s, --gdb-stub\t\tLaunch a gdb stub server (remote gdb debugging)\n");
 | 
						printf("  " OPTION_SEPARATOR "s, --gdb-stub\t\tLaunch a gdb stub server (remote gdb debugging)\n");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@ extern char* CURRENT_NAME;
 | 
				
			|||||||
extern size_t memory_size;
 | 
					extern size_t memory_size;
 | 
				
			||||||
extern char* file_path;
 | 
					extern char* file_path;
 | 
				
			||||||
extern bool gdbstub;
 | 
					extern bool gdbstub;
 | 
				
			||||||
 | 
					extern bool trace;
 | 
				
			||||||
void parse_options(int argc, char** argv);
 | 
					void parse_options(int argc, char** argv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user