第13周 星期二 第2大节

  • 视频:screen_编译原理与设计_第13周_星期二_第2大节.mp4
  • 字幕:transcripts/第13周_星期二_第2大节.srt

时间轴

  • 01:04 运行环境续讲:嵌套层次访问(SL/DL链)
  • 02:13 Display表(嵌套层次显示表)
  • 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:04 DAG节点:叶节点(标识符/常量)、内部节点(运算符)
  • 01:32:10 常见四元式→DAG节点对应(0型、1型、2型)
  • 01:34:49 DAG构造算法(4大步:建叶节点→合并常数→捕捉公共子表达式→无用赋值)
  • 01:41:04 算法分步详解
  • 02:05:52 DAG构造示例
  • 02:11:37 DAG用途:重写中间代码,实现常量合并、公共子表达式提取、无用赋值删除
  • 02:13:46 复杂DAG示例

关键点

考勤/签到/小测

无。

作业

无明确布置。

考试/复习重点

  • 01:14 运行环境考试不做过多要求,主要帮理解实验
  • 01:05:13 基本块/控制流图考试常见题型:给代码段→划基本块→画流图
  • 02:04:54 DAG构造算法往年很多学生画错
  • ⚠️ 02:13:17 批卷经验:前步错后步全错
  • 目标代码生成不覆盖(09:16
  • 基本块=唯一入口+唯一出口的顺序执行语句序列(54:31
  • DAG四步构造法(01:34:49

其他需要回看的片段

  • 02:50-06:12 Display表嵌套过程推演(主程序→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:37 DAG构造简单+复杂示例

省流

运行环境收尾(Display表)+ 代码优化全面展开。优化技术总览+基本块划分+控制流图+DAG构造。⚠️ 基本块/控制流图考试常见,DAG构造往年易错。运行环境不考大题。