jyy与yzh的折磨——从0到1撸PA的日子

写在前面

本文为自己做南京大学计算机科学与技术系计算机系统基础课程的小(mo)型(gui)项目 (Programming Assignment, PA)的一些心路历程与实验记录,会一直更新到把整个PA给写完了

博主目前为国内某中流985天坑专业在读大三老🐶一枚,在学CSAPP的时候了解到了这个小(mo)型(gui)项目,于是下定决心来做它,为了变强,加油!

至于标题为啥这么取,,,只是为了补偿一下我最近被他摧残的差不多了的小心脏😭,yzh老师真是太太太太太好了,把这么好的资料都公开了出来,唯一的小瑕疵就是不提供OJ给我们测试,,,不过我也很理解,能有这么好的学习资料我这种天坑专业的已经很满足了!🤑

南大真是太好了,南大就是中国的CMU啊——某中流985学子投来羡慕的目光

PA0😏——我已出仓,感觉良好

PA0还算蛮简单的,也就是配配环境,玩玩Git和vim。虽然之前都了解过这两个家伙,但是都没怎么用过,所以熟悉它们还是花了些时间的。就是唯一想吐槽的是老师这里的讲义居然是全英文的😭,英语不好的我流下了不争气的泪水😭 但是作为一名”工程师“应有的素质,我觉得老师这里做的肥肠棒,成功的让我燃起了好好学英语的兴趣!而且强制使用英语看这些报告虽然刚开始慢了点,还得时刻借助翻译的插件,但是时间长了之后对自己肯定只有好处,没有坏处。正如讲义里提到的:坚持一年, 你就会发现有不同; 坚持两年, 你就会发现大有不同。

整个讲义看下来,能明显的感觉到老师的良苦用心,又是让我阅读提问的智慧别像弱智一样提问然后写800字的感想,又是随时都在让我

  • STFW——Search The Friendly Web

  • RTFM——Read The Friendly Menu

  • RTFSC——Read The Friendly Source Code

PA1——开始有些难度

这个PA我读完手册还是一脸懵逼,不知道从哪开始,然后找了老师相关的习题课以及相关的博客文章看了一些之后才有了一丝修改的意识与方法

单步执行

这里看了看了好久才知道是要自己实现让CPU单步执行程序的功能(原谅我菜的真实555)

然后需要使用老师提示使用的strtoksscanf函数,具体应该是解析指令然后解析出数字,传送到CPU处使用CPU提供的指令单步执行

一次si多行倒是实现的快,但是无参数默认单步执行一直实现不出来,X了狗了,就先跳过,去做下一个命令

打印寄存器信息

这个看起来比较简单,找到CPU的寄存器结构体的定义和数据用printf打印出来就行,就是看工程文件看的有点头秃,第一波打印完之后数据有点对不齐,因为数字超过了8位,\t直接控制到下一个光标去了,就很丑,在这里卡了一会终于搞完了,很舒服

扫描内存

感觉每个任务最难的是理解题目需求和意思,看懂了要干什么之后找起文件来也就容易多了

表达式