汇编语言
- 层级
- 本科生
- 状态
- 建设中
提示:本课程仍在持续设计和校准中,页面内容仅供参考,不代表最终教学版本。
教学大纲
课程概览
汇编语言课程训练学生直接理解机器状态:寄存器、栈、调用约定、链接、异常、系统调用和反汇编。课程采用 RISC-V 与 x86-64 对照,服务于系统编程、逆向分析、漏洞利用和性能调试。
这是系统编程、软件安全、应用密码学实现和嵌入式系统的机器级基础。
先修要求
- 计算机组成基础。
- 熟悉 C 语言指针、数组和函数调用。
- 能够使用命令行、编译器和调试器。
学习目标
- 阅读和编写小型汇编程序。
- 解释 ABI、调用约定、栈帧和链接过程。
- 用调试器和反汇编工具定位机器级 bug。
- 理解整数、内存和控制流错误的机器表现。
- 为系统代码和安全分析建立机器级直觉。
教学组织
- 每周 2 次课堂:一次讲授核心概念,一次用于实验、论文讨论或项目评审。
- 课程按 16 周推进,每周都有可检查的作业、实验或项目里程碑。
- 强调可复现材料:代码、配置、数据、实验日志和报告需要能被助教或同学复查。
周计划
第 1 周
第 2 周
ISA、寄存器和指令格式实验与评审
手写 RISC-V 小程序并单步执行。完成配套实验、记录问题,并在课堂评审中解释设计取舍。
第 3 周
第 4 周
数据表示、寻址和内存实验与评审
分析数组、结构体和指针访问。完成配套实验、记录问题,并在课堂评审中解释设计取舍。
第 5 周
第 6 周
控制流和函数调用实验与评审
还原 C 函数的汇编控制流。完成配套实验、记录问题,并在课堂评审中解释设计取舍。
第 7 周
第 8 周
ABI、栈帧和链接实验与评审
调试调用约定和链接错误。完成配套实验、记录问题,并在课堂评审中解释设计取舍。
第 9 周
第 10 周
系统调用、异常和中断实验与评审
实现一个最小用户态系统调用封装。完成配套实验、记录问题,并在课堂评审中解释设计取舍。
第 11 周
x86-64 对照与反汇编
用 objdump 和 gdb 还原程序行为。
第 12 周
x86-64 对照与反汇编实验与评审
用 objdump 和 gdb 还原程序行为。完成配套实验、记录问题,并在课堂评审中解释设计取舍。
第 13 周
第 14 周
机器级安全和性能实验与评审
观察栈破坏、ROP 片段和热点循环。完成配套实验、记录问题,并在课堂评审中解释设计取舍。
第 15 周
第 16 周
汇编项目与复盘实验与评审
提交汇编库、测试和调试笔记。完成配套实验、记录问题,并在课堂评审中解释设计取舍。
考核方式
个人作业
25%概念题、阅读题、设计题和小型编程或实验任务。
实验与项目
40%汇编实现、反汇编分析、调试记录和测试。
课堂参与与评审
10%参与讨论、演示、代码或论文评审,以及同伴反馈。
期末报告与答辩
25%提交可复现材料、技术报告和演示,说明方法、结果、限制与后续工作。
课程项目
学生实现一个小型汇编库、解释器片段或逆向分析任务,要求给出测试、调试记录和与 C 实现的对照。
课程政策
- 允许使用 AI 工具,但所有生成代码、实验记录和设计建议必须经过学生本人审查,并在报告中说明使用方式。
- 严禁提交不能解释的代码、证明、配置或实验结果;答辩时每名成员都需要解释自己负责部分的设计、测试和取舍。
- 迟交会影响迭代评分,但课程更看重可复现、可审计和可维护的结果,而不是临时堆砌。
参考课程
国际名校
- CMU15-213: Introduction to Computer Systems
- CornellECE 2300: Digital Logic and Computer Organization
- ETH ZurichDigital Design and Computer Architecture
- Georgia TechCS 2110: Computer Organization and Programming
- MIT6.1810: Operating System Engineering (RISC-V assembly)
- PrincetonCOS 217: Introduction to Programming Systems
- StanfordCS 107E: Computer Systems from the Ground Up
- UC BerkeleyCS 61C: Great Ideas in Computer Architecture (RISC-V)
- UIUCECE 391: Computer Systems Engineering
- University of WashingtonCSE 351: The Hardware/Software Interface
中国 985 高校
- 上海交通大学计算机系统基础(ICS,含汇编语言)
- 中国科学技术大学计算系统综合实验(含汇编)
- 北京大学汇编语言程序设计
- 北京航空航天大学微机原理与接口技术
- 华中科技大学汇编语言与微机原理
- 南京大学计算机系统基础(含汇编语言)
- 哈尔滨工业大学汇编语言程序设计
- 复旦大学汇编语言与计算机组成
- 武汉大学汇编语言与接口技术
- 清华大学汇编语言程序设计
- 西安交通大学微机原理与接口技术