优美地退出
仅提供查错思路,怎么改正还需自己理解nemu的框架,RTFSC!
启动nemu:make run
键入q后:
发现报错
(我之前以为是makefile的问题,查看native.mk后发现并不是)
查错
先找到main函数
查看:
结合之前的文档:init_monitor()函数:
engine_start()函数:
查看一下sbd_mainloop():
发现一个rl_gets()函数;
上网搜了一下,发现使用readline库
继续往下读发现一个结构体:cmd_table[]
往上翻找到:
这个结构体的定义值得学习一下,int (*handler) (char *) , 可以使用cmd_table[i].xxx(cmd_help,cmd_c,cmd_q)执行相应的函数,很妙
与在nemu运行时能够使用的命令契合
于是猜测:
通过readline()读入命令然后通过strtok()过滤空格,通过strcmp()将键入的命令与cmd_table[i].name进行对比然后执行相应函数,那么在我们键入q时就会调用cmd_q函数:
什么也不做只返回-1:
然后判断 if(cmd_q < 0){return;} , -1 < 0所以直接返回main函数了:
随后返回并调用 is_exit_status_bad() :(find搜索一下)
到这里应该了解了为什么会发生错误,main()函数返回了-1 , 自己理解并修改一下