> 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:
parent
15417e3e7a
commit
7e4321a906
1 changed files with 18 additions and 0 deletions
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue