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

云端杂谈

“ 碎片记录 ”

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 了,反而愿意坐下来,把每一条指令的意思弄清楚。 也算是另一种形式的复习吧。 --- ## 关于这个系列 我打算陆陆续续把大学时期的课程实验都整理出来。 不图别的,就是想给那几年留个记录。 如果刚好有人在学同样的课、被同样的地方卡住, 能从这里找到一句有用的话,那就更好了。 第一篇已经从「计算机原理」开始了。 后面如果翻出别的课,再慢慢加。 --- *写于一个整理旧文件的下午。*
#随笔#大学#整理