> compile NEMU

ysyx_22040000 李心杨
Linux calcite 6.1.75 #1-NixOS SMP PREEMPT_DYNAMIC Thu Jan 25 23:27:52 UTC 2024 x86_64 GNU/Linux
 19:14:37  up 1 day  4:50,  2 users,  load average: 0.62, 0.90, 0.84
This commit is contained in:
tracer-ysyx 2024-02-08 19:14:37 +08:00 committed by xinyangli
parent 15417e3e7a
commit 7e4321a906

View file

@ -31,6 +31,7 @@ static int is_batch_mode = false;
// command handlers // command handlers
static int cmd_help(char *args); static int cmd_help(char *args);
static int cmd_c(char *args); static int cmd_c(char *args);
static int cmd_p(char *args);
static int cmd_q(char *args); static int cmd_q(char *args);
static int cmd_w(char *args); static int cmd_w(char *args);
static int cmd_x(char *args); static int cmd_x(char *args);
@ -54,6 +55,7 @@ static struct CommandTable {
{"help", "Display information about all supported commands", cmd_help, {"help", "Display information about all supported commands", cmd_help,
NULL, 0}, NULL, 0},
{"c", "Continue the execution of the program", cmd_c, NULL, 0}, {"c", "Continue the execution of the program", cmd_c, NULL, 0},
{"p", "Print expression result", cmd_p, NULL, 0},
{"q", "Exit NEMU", cmd_q, NULL, 0}, {"q", "Exit NEMU", cmd_q, NULL, 0},
{"x", "Examine content of physical memory address", cmd_x, NULL, 0}, {"x", "Examine content of physical memory address", cmd_x, NULL, 0},
{"w", "Break when expression is changed", cmd_w, NULL, 0}, {"w", "Break when expression is changed", cmd_w, NULL, 0},
@ -146,6 +148,22 @@ static int cmd_c(char *args) {
return 0; return 0;
} }
static int cmd_p(char *args) {
char *arg = strtok(NULL, " ");
bool res = false;
word_t result = parse_expr(arg, &res);
if (!res)
goto wrong_usage;
printf("%s: %u", arg, result);
return 0;
wrong_usage:
printf("Invalid argument for command p: %s\n", arg);
printf("Usage: p [EXPR: <expr>]\n");
return 0;
}
static int cmd_q(char *args) { static int cmd_q(char *args) {
nemu_state.state = NEMU_QUIT; nemu_state.state = NEMU_QUIT;
return -1; return -1;