PA0 - 世界诞生的前夜: 开发环境配置

在执行下述命令:

apt-get install libsdl2-dev        # a library used later
apt-get install llvm llvm-dev      # llvm project, which contains libraries used later

发现缺少依赖

执行下述命令,仍然没有效果

apt-get update

RTFM 后,发现是镜像源的问题,更改镜像源后,再次进行操作,发现可以成功安装

PA1 - 开天辟地的篇章:最简单的计算机

在开始愉快的PA之旅之前

开头简简单单的运行一个已经完成的 红白机模拟器项目FCEUX ,前前后后就搞了一个多小时,出师未捷身先死了属于是。果然还是没有 RTFM 的锅。问题是这样的:我在 PA0 里配置的环境变量是 bash 的,而之后我又将我的 Shellbash 更换到了 zsh,却没有重新配置环境变量。而 Makefile 中的 AM_HOME 实际上使用了 系统环境变量,所以我无法将程序跑起来。

解决方法:在 .zshrc 下手动加入环境变量的配置

export NEMU_HOME=/home/xan/Desktop/ics2022/nemu                                                                                                                                     

export AM_HOME=/home/xan/Desktop/ics2022/abstract-machine

然后,在命令行界面运行命令 source ./.zshrc 即可

最后再放一下成功运行马里奥的界面😁

image.png

在配置 ccache 的时候又粗心了,.zshrc 中的 export PATH="/usr/lib/ccache:$PATH",楞是写成了 export PATH="/usr/lib/cache:$PATH,怪不得总是不行。好在折腾了一个来小时后,终于成功发现,修改后果然成功

image.png

RTFSC

image.png
在解决上述问题的时候,偷了下懒,直接去网上🔍思路,看别人找问题看源码的过程,感觉还是挺妙的。下次还得是自己去解决,这样才会有更多的收获,相信自己能做到的💪。下文是出问题的地方的修改&&解决完后的界面。
image.png

基础设施

image.png
前面几个还是认真自己完成的,后面碰到困难又忍不住去参考别人的代码了🤡

  • 记于 2023-06-26-00-15,发现正确的食用方式是先看习题课视频,再同时完成 ICS-PA,先把视频补上,过两天再来继续做🥰
  • 记于 2023-06-29,再次看了看学术诚信,一定要记得遵守,每一次的偷懒都会在之后还回来的,只有坚持着自己去 debug,才能得到锻炼,不要忘记自己为什么要去选择做 ICS-PA🦾

表达式求值

  • 2023-07-09-22-42,前面几天零零总总的去把视频课补了补,阅读了些许工具的手册,配置了我的 vim,学习掌握了一些好用的命令行工具。写代码也是今天昨天两天,是比较高效的,感觉自己又可以了💪明天继续完善表达式生成器,生成测试用例自动测试,再根据测试改一改我的代码

image.png

关于如何测试你的代码这一部分,有一些细节的问题:

  • 如何保证表达式进行无符号运算?
  • 如何随机插入空格?
  • 如何生成长表达式, 同时不会使buf溢出?
  • 如何过滤求值过程中有除0行为的表达式?

其中,保证表达式进行无符号运算这一部分,即保证运算时不出现整形溢出挺难实现的。将表达式计算结果出现的整形溢出情况,以及子表达式计算过程中产生的溢出情况筛选掉

我先把这部分放一放,之后再来处理处理

  • 2023-07-10 大体上已经是完成了,感觉还是比较满意的,看来我还是可以坚持着写下去的么hh🥰 不过先去学一学 pyGICS-PA 过段时间再做。之前一直是在 vim 里写的,今天下午把 VSCode 的配置总算是搞完了,在 VSCode 里下载了 Vim 插件,下次做起来也会轻松许多了,就是有点奇怪, engine_start() 里面的程序不知道如通过GDB调试,目前还是得用 make gdb 来调试。感觉最近写的比较吃力,还是先放放,等之后有空了再继续写写。下面是 VSCode 的部分命令:
    • F9 断点,F5 调试
    • Ctrl+Shift+B,运行 nemu