不完美笔记
首页项目归档照片墙音乐说说杂谈友链关于
封面

翻出几份大学时的实验报告

2026-09-29 11:30:00
✨ 心情:怀念
# 随笔
# 大学
# 整理

最近在硬盘里翻出来一个文件夹,名字叫「计算机原理」。

点开一看,是大学时候那门课的实验报告。.docx 的表格式报告,标题栏写着姓名、班级、学号、指导老师、实验日期——标准得像是昨天才交上去的。

我盯着那几个字段看了挺久。


那些报告里写了什么

其实内容不多。一门专业基础课,几个实验:

  • 看编译器怎么把 a * 3 优化成移位和加法
  • 用 IDA 和 OllyICE 逆一个登录校验,从内存里挖出密码
  • 手工构造栈溢出,让一个 exe 打开蜘蛛纸牌
  • 算直接映射缓存的命中率,最后算出来是 0%

当时的实验报告,很多地方写的是「在同学的帮助下我明白了」「在请教同学之后我发现」。 现在回头看,那大概是真话——大部分时间确实是卡住的。


为什么想整理

说实话,当时做这些实验,很多是照着步骤跑通的。

IDA 里看到一堆指令,跟着报告一步步点,最后蜘蛛纸牌弹出来了,实验就算完成。 但要是有人问我「为什么是 jmp esp 而不是 jmp eax」, 或者「为什么你的机器码和别人的不一样」—— 那会儿的我大概答不上来。

现在重新把报告敲成 Markdown,一行一行写下来,才发现自己当时漏掉了多少东西。

比如栈溢出那个实验,报告里我写「我的 jmp esp 地址和别人的不一样,陷入了巨大的混乱」。 当时是模模糊糊地绕过去了。这次整理的时候才真正想通:

call 后面跟的是相对偏移量,不是绝对地址。 所以同一段代码放在不同位置,编译出来的机器码当然不一样。

一句话的事。当时卡了我很久。


顺手做了点处理

搬到站上之前,我把报告里的个人信息都删掉了:

  • 姓名、学号、班级
  • 指导老师姓名
  • 带年级标识的课程资料路径

原始报告里那些截图也没放上来——IDA 和 OllyICE 的窗口标题、文件路径里 很容易带上 Windows 用户名,我没法逐张确认干净,索性只保留文字部分。

至于内容本身,我基本是照实整理的,包括当时写得不太对的地方。

毕竟这是一份「我当时是怎么想的」的记录, 而不是「一份标准答案」。 把它修得完美无缺,反而没什么意思了。


一点感慨

大学那几年,很多课都是这样:上完、考完、就忘了。

当时觉得抽象得要命的东西——补码、大小端、缓存映射—— 现在做前端、写部署脚本,居然还真用得上。 至少看到 imul 配 shr 会反应过来「这原本是个除法」。

也可能只是因为,现在终于有耐心把它看懂了。

那会儿赶着交作业,一心想的是「怎么让它跑起来」。 现在没有 deadline 了,反而愿意坐下来,把每一条指令的意思弄清楚。

也算是另一种形式的复习吧。


关于这个系列

我打算陆陆续续把大学时期的课程实验都整理出来。

不图别的,就是想给那几年留个记录。 如果刚好有人在学同样的课、被同样的地方卡住, 能从这里找到一句有用的话,那就更好了。

第一篇已经从「计算机原理」开始了。 后面如果翻出别的课,再慢慢加。


写于一个整理旧文件的下午。

avatar

Winter21c

暗处提灯,静处守门;功成不必在我,安宁自在人间

2026年9月

一
二
三
四
五
六
日
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

Recent Records