55AA-006B

汇编语言

层级
本科生
状态
建设中

提示:本课程仍在持续设计和校准中,页面内容仅供参考,不代表最终教学版本。

教学大纲

课程概览

汇编语言课程训练学生直接理解机器状态:寄存器、栈、调用约定、链接、异常、系统调用和反汇编。课程采用 RISC-V 与 x86-64 对照,服务于系统编程、逆向分析、漏洞利用和性能调试。

这是系统编程、软件安全、应用密码学实现和嵌入式系统的机器级基础。

先修要求

  • 计算机组成基础。
  • 熟悉 C 语言指针、数组和函数调用。
  • 能够使用命令行、编译器和调试器。

学习目标

  • 阅读和编写小型汇编程序。
  • 解释 ABI、调用约定、栈帧和链接过程。
  • 用调试器和反汇编工具定位机器级 bug。
  • 理解整数、内存和控制流错误的机器表现。
  • 为系统代码和安全分析建立机器级直觉。

教学组织

  • 每周 2 次课堂:一次讲授核心概念,一次用于实验、论文讨论或项目评审。
  • 课程按 16 周推进,每周都有可检查的作业、实验或项目里程碑。
  • 强调可复现材料:代码、配置、数据、实验日志和报告需要能被助教或同学复查。

周计划

第 2 周

ISA、寄存器和指令格式实验与评审

手写 RISC-V 小程序并单步执行。完成配套实验、记录问题,并在课堂评审中解释设计取舍。

第 4 周

数据表示、寻址和内存实验与评审

分析数组、结构体和指针访问。完成配套实验、记录问题,并在课堂评审中解释设计取舍。

第 6 周

控制流和函数调用实验与评审

还原 C 函数的汇编控制流。完成配套实验、记录问题,并在课堂评审中解释设计取舍。

第 8 周

ABI、栈帧和链接实验与评审

调试调用约定和链接错误。完成配套实验、记录问题,并在课堂评审中解释设计取舍。

第 10 周

系统调用、异常和中断实验与评审

实现一个最小用户态系统调用封装。完成配套实验、记录问题,并在课堂评审中解释设计取舍。

第 12 周

x86-64 对照与反汇编实验与评审

用 objdump 和 gdb 还原程序行为。完成配套实验、记录问题,并在课堂评审中解释设计取舍。

第 14 周

机器级安全和性能实验与评审

观察栈破坏、ROP 片段和热点循环。完成配套实验、记录问题,并在课堂评审中解释设计取舍。

第 16 周

汇编项目与复盘实验与评审

提交汇编库、测试和调试笔记。完成配套实验、记录问题,并在课堂评审中解释设计取舍。

考核方式

个人作业

概念题、阅读题、设计题和小型编程或实验任务。

25%
实验与项目

汇编实现、反汇编分析、调试记录和测试。

40%
课堂参与与评审

参与讨论、演示、代码或论文评审,以及同伴反馈。

10%
期末报告与答辩

提交可复现材料、技术报告和演示,说明方法、结果、限制与后续工作。

25%

课程项目

学生实现一个小型汇编库、解释器片段或逆向分析任务,要求给出测试、调试记录和与 C 实现的对照。

课程政策

  • 允许使用 AI 工具,但所有生成代码、实验记录和设计建议必须经过学生本人审查,并在报告中说明使用方式。
  • 严禁提交不能解释的代码、证明、配置或实验结果;答辩时每名成员都需要解释自己负责部分的设计、测试和取舍。
  • 迟交会影响迭代评分,但课程更看重可复现、可审计和可维护的结果,而不是临时堆砌。

参考课程