2026春《编译原理》笔记(第7、9、10章:语义分析、运行时存储组织、代码优化和目标代码生成)
目录
第七章 语法制导的语义计算
综合属性和继承属性。
语义规则之规则:右部符号的继承属性和左部符号的综合属性由本产生式提供计算规则,且规则中只能使用本产生式中文法符号的属性;左部符号的继承属性和右部符号的综合属性由其它产生式提供语义规则来计算。
算法:属性计算与注释分析树的构造

算法:依赖图的构造与语义计算顺序的确定

7.1 基于属性文法的语义计算
S-属性文法和L-属性文法。
基于S-属性文法的语义计算:采用LR分析,每当归约时,执行语义计算。
算法:构造\(AST\)

基于L-属性文法的语义计算:树遍历法。
算法:树遍历法

7.2 基于翻译模式的语义计算
S-翻译模式和L-翻译模式。
算法:基于S-翻译模式的语义计算
详见课件。
算法:基于L-翻译模式的自顶向下计算
详见课件。
算法:基于L-翻译模式的自底向上计算
详见课件。
分析和翻译的自动生成工具 bison。
第九章 运行时存储组织
典型的运行时存储空间布局:

9.1 栈帧

栈式存储分配策略:
- 当调用子程序时,在数据空间栈顶,给子程序分配所需的子程序过程活动记录。
- 当子程序返回时,从数据空间栈顶,收回分配给子程序所占用过程活动记录。
- 在允许递归调用时,一个子程序可能在数据空间中同时拥有多个过程活动记录。
示例:普通数组

示例:动态数组

9.2 函数调用与参数传递

第十章 代码优化和目标代码生成
算法:划分基本块

算法示例:删除公共子表达式


算法示例:删除无用代码

算法示例:削弱归纳变量强度与删除归纳变量


算法:求回边的自然循环

算法总结:数据流分析

代码优化技术:
- 窥孔优化
- 局部优化
- 循环优化
- 全局优化
算法:简单的目标代码生成示例

浙公网安备 33010602011771号