第13周 星期二 第2大节
- 视频:
screen_编译原理与设计_第13周_星期二_第2大节.mp4 - 字幕:
transcripts/第13周_星期二_第2大节.srt
时间轴
01:04运行环境续讲:嵌套层次访问(SL/DL链)02:13Display表(嵌套层次显示表)06:12栈式存储分配三条限制07:52堆分配(malloc/free)09:09过渡到代码优化(最后一个大头)10:47代码优化定义:等价变换,不改变结果,提高效率13:42优化目标:时间(运行时间短)和空间(占用少)17:51三条原则:等价、有效、合算19:55优化时期:中间代码优化(平台无关)vs 目标代码优化(平台相关)20:46按范围分类:局部优化、循环优化、全局优化22:17常见优化技术列举23:29常量合并与传播25:06公共子表达式删除26:40循环不变量外提28:33无用赋值/转移删除、死代码删除31:25函数内嵌(inline)33:17循环强度削弱(乘法→加法)53:59基本块概念:顺序执行的最长语句序列,唯一入口/唯一出口56:05基本块划分方法(入口语句识别)59:05基本块划分示例01:10:55程序控制流图(有向图,节点=基本块)01:24:50从中间代码识别循环结构01:26:24基本块的DAG表示01:29:04DAG节点:叶节点(标识符/常量)、内部节点(运算符)01:32:10常见四元式→DAG节点对应(0型、1型、2型)01:34:49DAG构造算法(4大步:建叶节点→合并常数→捕捉公共子表达式→无用赋值)01:41:04算法分步详解02:05:52DAG构造示例02:11:37DAG用途:重写中间代码,实现常量合并、公共子表达式提取、无用赋值删除02:13:46复杂DAG示例
关键点
考勤/签到/小测
无。
作业
无明确布置。
考试/复习重点
01:14运行环境考试不做过多要求,主要帮理解实验01:05:13基本块/控制流图考试常见题型:给代码段→划基本块→画流图02:04:54DAG构造算法往年很多学生画错- ⚠️
02:13:17批卷经验:前步错后步全错 - 目标代码生成不覆盖(
09:16) - 基本块=唯一入口+唯一出口的顺序执行语句序列(
54:31) - DAG四步构造法(
01:34:49)
其他需要回看的片段
02:50-06:12Display表嵌套过程推演(主程序→P→Q→R)23:29-27:55各优化技术示例(常量合并、公共子表达式、循环不变量外提)33:23-37:38强度削弱示例(table[i]=0中i*4→T1+4)59:05-01:03:00基本块划分示例01:14:49-01:21:56控制流图构建示例02:05:52-02:11:37DAG构造简单+复杂示例
省流
运行环境收尾(Display表)+ 代码优化全面展开。优化技术总览+基本块划分+控制流图+DAG构造。⚠️ 基本块/控制流图考试常见,DAG构造往年易错。运行环境不考大题。