语义分析与中间代码生成(二)
本课程由南京大学计算机学院冯洋老师及其团队主讲,聚焦编译技术中关键的中间代码生成环节,系统讲解从源程序到中间表示(IR)的核心原理与实践方法。课程先梳理编译器前端到后端的流程,以 Rust 编译为例,阐述从抽象语法树(AST)经高层中间表达(HIR)、中层中间表达(MIR)到 LLVM-IR 的转换逻辑,重点解析 MIR 作为 Rust 编译器特有中层 IR 的结构与优化作用。
课程核心内容涵盖中间代码表示类型,详解高层、中层、低层 IR 的特点与适用场景,深入剖析三地址码(TAC)、四元式、三元式及静态单赋值(SSA)等主流 IR 形式,结合实例说明其指令格式、转换规则与优化价值,如 SSA 通过 φ 函数解决变量重赋值问题,简化数据流分析与优化。
同时,课程围绕类型检查与控制流语句翻译展开,讲解类型表达式、类型等价与兼容规则,以及如何通过语法制导翻译(SDT)将表达式、数组引用、if-else、while 等结构转换为中间代码。课程还包含实践环节,指导学生使用 Rust 的 syn 库生成 AST,编写中间代码生成工具(rust_mir_gen),完成 Rust 代码到规范 MIR 的转换,强化理论与实践结合能力。
视频讲解
00:00 / 00:00
1080p
1x
课件
/ 1
/ 1
