33void help_command_callback() {
34 printf(
"help info\n");
37void run_command_callback(
char *args,
CPU *cpu) {
41void step_command_callback(
char *args,
CPU *cpu) {
42 if(args !=
NULL && strlen(args) > 0){
56ap_def_callback(default_callback) {
65ap_def_callback(hello_callback) {
74ap_def_callback(test_callback) {
80 printf(
"no value. init: %s\n", arg_o->init.s);
82 printf(
"option output: %s\n", arg_o->value);
85 if(!
ap_get(
"quiet")->value) {
86 q_l =
ap_get(
"quiet")->init.i;
88 q_l = atoi(
ap_get(
"quiet")->value);
90 printf(
"set quiet: %d\n", q_l);
95ap_def_callback(debug_callback) {
101 if(!
ap_get(
"input")->value) {
102 char* default_input =
"./test/temp_02.out";
103 log_warn(
"No input file, use: %s", default_input);
104 load_elf(&cpu, default_input);
106 load_elf(&cpu,
ap_get(
"input")->value);
108 linenoiseHistoryLoad(
"history.txt");
110 while ((line = linenoise(
">> ")) !=
NULL) {
111 if (line[0] !=
'\0') {
112 linenoiseHistoryAdd(line);
113 linenoiseHistorySave(
"history.txt");
114 char *command = strtok(line,
" ");
115 char *args = strtok(
NULL,
" ");
116 if (strcmp(command,
"help") == 0 || strcmp(command,
"h" ) == 0) {
117 help_command_callback();
118 }
else if (strcmp(command,
"run" ) == 0 || strcmp(command,
"r" ) == 0) {
119 run_command_callback(args, &cpu);
120 }
else if (strcmp(command,
"step") == 0 || strcmp(command,
"si") == 0) {
121 step_command_callback(args, &cpu);
122 }
else if (strcmp(command,
"load") == 0 || strcmp(command,
"l" ) == 0) {
123 load_elf(&cpu, args);
124 }
else if (strcmp(command,
"quit") == 0 || strcmp(command,
"q" ) == 0) {
129 log_warn(
"Unknown command: %s", command);
static ap_arg_t * ap_get(char *arg_name)
根据参数名获取参数值
Definition argparse-new.h:268
int cpu_step(CPU *cpu, int step)
处理器步进执行
Definition cpu.c:792
void cpu_init(CPU *cpu)
处理器初始化给定的CPU, 将指针指向的CPU中的寄存器全部置 0, 并将程序寄存器pc的值设为内存的起始地址。
Definition cpu.c:592
int cpu_loop(CPU *cpu, char *filename)
处理器循环执行
Definition cpu.c:821
#define NULL
Definition list.h:22
#define log_warn(...)
Definition log.h:136
#define log_error(...)
Definition log.h:139
#define log_assert(condition,...)
Definition log.h:149
#define log_info(...)
Definition log.h:133
#define log_debug(...)
Definition log.h:130
#define log_trace(...)
Definition log.h:127
中央处理器结构体
Definition cpu.h:35
Definition argparse-new.h:90