如果有什么地方有误 请多多指教;
写这个不是让同学们直接抄的,请弄懂原理哦,我觉得我解释的蛮清楚了。
遇到了问题也可以评论留言或者私信我;
pa1代码➕思路,pa2代码+思路,pa3仙剑奇侠传仅代码。见评论区。
1 PA1 – 开天辟地的篇章:最简单的计算机
1.3 监视点
1)监视点的结构体
typedef struct watchpoint {
int NO; //编号
struct watchpoint *next;
int value; //旧值,
int newvalue; //新值,
char type; //类型监视点w or断点b
char Enb; //是否开启
char str[32]; //被监视的表达式
/* TODO: Add more members if necessary */
} WP;
- 实现监视点的池的管理。
new_wp是从free链表中取一个结点给head链表,且将表达式、值赋给它,修改开关,并输出该节点的编号。运用正则表达式判断是否为断点,若是则type为b,否则为w,具体见下文断点处。
free_wp函数是遍历head链表直到找出对应NO的结点,从head中删除,添加到free链表中。同时修改类型、表达式、值、开关。
3)温故而知新
框架代码中定义wp_pool等变量时使用了关键字static,在此处的含义是静态全局变量,该变量只能被本文件中的函数调用,并且是全局变量,而不能被同一程序其他文件中的函数调用。在此处使用static是为了避免它被误修改。
- 实现以下功能:
- 如讲义中所言,每当cpu_exec()执行完一条指令,调用函数judge_wp对所有表达式求值判断是否变化,若变化则返回-1,暂停,输出提示并返回。