前提说明:我最近一直在学习CSAPP这门课,听两位教授讲课十分过瘾,也产生了一些心得。而在国庆期间无意看到了@anarion大佬所写的学习笔记,深有感触,同时发现我和他的学习思路和使用工具(
jetbrains
,vscode
,linux
)都非常接近,于是也想把自己的心得和作业思路写成文章分享。
我是一名普通的本科生,学这些课程只是出于自己的兴趣。我计划将这门课的学习写成一个专栏,以更加深入地理解课程内容,也算是对自己的一个监督。
课程介绍
这门课程是卡内基梅隆大学的计算机基础课程,内容涵盖了计算机组成与体系结构,汇编,操作系统以及计算机网络等一些基础知识。相对应的那本深入理解计算机系统(csapp)的12个章节则对应着讲课的内容。建议大家可以去阅读这本书,内容十分详尽,就是一些特定的中文翻译可能不尽如人意。
我个人是以同时观看视频和阅读书籍的方式进行学习的。
课程资源
视频资源
b站视频资源
这位up主精校的字幕还不错,是对我这样英语不好的人的福音~。
Lab资源
进入CSAPP课程首页之后
- 点击红线,进入Lab汇总
- 后面两个为上课时的PPT以及代码示例,由于我没用到,因此不作介绍了。
进入之后,下图为第一个Lab:Data Lab的内容.
点击README
可查看该作业的介绍;点击下载Self-Study Handout
可获得源程序。
环境搭建
- Ubuntu 20.04.1 LTS
- CLion
- CLion的Makefile support插件
之后用clion
打开datalab-handout
,即可开始完成作业啦。
DataLab及相关内容
此课程的第一部分是Representing and Manipulating Information,即信息的表示与处理。
由于本章视频内容不难,看完B站视频的前三节我就开始写datalab了。
但datalab真的很难,我花了好一段时间,和室友讨论了很久才算堪堪做完。
现在我将选取个人认为很困难的一些问题进行仔细分析。
但首先的问题是怎么写这个lab。
如何完成DataLab
可以看到datalab-handout
的内部文件结构,通过阅读README可以知道我们要填充的是bits.c
(具体怎么填充请自行阅读),完成之后我们要做两件事。
-
在clion自带的Terminal(当然也可以不用这个)中使用指令,没有任何反应则为正确
./dlc bits.c
-
接着使用指令
make btest
解释一下,dlc
是一个专门的编译器,负责检查你所写的代码是否满足所规定的Legal ops和Max ops等规定,之后的make btest
负责生成可执行文件btest
,即检验你代码的正确性,包含你的每道题的错误和得分。
当然如果使用clion
也可以进入Makefile
文件直接点击左边的小三