What I talk about when I talk about IRs
a year ago
- #intermediate-representation
- #compiler-design
- #optimization
- 编译器中间表示(IR)应支持基于局部信息做出决策
- 循环和条件语句等控制流结构在IR中被分解为简单比较和跳转指令
- 显式跳转和标签将代码转换为控制流图(CFG),实现更灵活的优化
- 基本块(BB)和扩展基本块(EBB)是CFG关键组件,学界对其优劣存在不同观点
- 基于图的抽象解释可实现高级优化
- 基于栈的IR使用隐式共享状态(栈),而基于寄存器的IR使用显式命名的输入输出
- 静态单赋值(SSA)形式确保每个变量只被定义一次,简化分析和优化
- 静态单信息(SSI)形式在SSA基础上编码变量元数据,支持更精确的分析
- 节点之海(SoN)IR设计同时具象化数据和控制依赖,允许更灵活的指令排序
- 其他相关IR设计包括值依赖图(VDG)、值状态依赖图(VSDG)和程序依赖图(PDG)