73中间代码生成 何谓中间代码( Intermediate code) Intermediate representation Intermediate language 源程序的一种内部表示,不依赖目标机的结构,易于机械生成 目标代码的中间表示。 为什麽要此阶段 逻辑结构清楚;利于不同目标机上实现同一种语言; 利于进行与机器无关的优化;这些内部形式也能用于解释。 中间代码的几种形式 逆波兰四元式三元式间接三元式树
. . . 何谓中间代码 ( Intermediate code ) ( Intermediate representation ) ( Intermediate language ) 源程序的一种内部表示,不依赖目标机的结构,易于机械生成 目 标代码的中间表示。 为什麽要此阶段 逻辑结构清楚;利于不同目标机上实现同一种语言; 利于进行与机器无关的优化;这些内部形式也能用于解释。 中间代码的几种形式 逆波兰 四元式 三元式 间接三元式 树 7.3 中间代码生成
中间代码生成 中间代码的形式 中间代码生成
中间代码生成 • 中间代码的形式 • 中间代码生成
7.3.1中间代码de形式 中间代码 ·是源程序的一种内部表示 复杂性介于源语言和目标机语言之间 中间代码的作用: 使编译程序的逻辑结构更加简单明确 利于进行与目标机无关的优化 利于在不同目标机上实现同一种语言 中间代码的形式 逆波兰式、四元式、三元式、间接三元式、抽 象语法树和DAG
7.3.1中间代码de形式 • 中间代码: • 是源程序的一种内部表示 • 复杂性介于源语言和目标机语言之间 • 中间代码的作用: • 使编译程序的逻辑结构更加简单明确 • 利于进行与目标机无关的优化 • 利于在不同目标机上实现同一种语言 • 中间代码的形式: 逆波兰式、四元式、三元式、间接三元式、抽 象语法树和DAG
中间代码的层次 中间代码按照其与高级语言和机器语言的接 近程度,可以分成以下三个层次 高级:最接近高级语言,保留了大部分源语言 的结构 ·中级:介于二者之间,与源语言和机器语言都 有一定差异 ·低级:最接近机器语言,能够反映目标机的系 统结构,因而经常依赖于目标机
中间代码的层次 中间代码按照其与高级语言和机器语言的接 近程度,可以分成以下三个层次: • 高级:最接近高级语言,保留了大部分源语言 的结构。 • 中级:介于二者之间,与源语言和机器语言都 有一定差异。 • 低级:最接近机器语言,能够反映目标机的系 统结构,因而经常依赖于目标机
不同层次的中间代码 源语言中间代码中间代码中间代码 高级语言)(高级) (中级) (低级) t1=a[1j+2] t1=j+2 r1=[p-4] float a[10][20; t2=i*20 r2=[r1+2] a[[+2: t3=t1+t2 r3=[p-8] t4=4*t3 r4=r3*20 t5= addr a r5=r4+r2 t6= t5+ t4 r6=4*r5 t7=*t6 fp-216 f1=[r7+r6]
不同层次的中间代码 源语言 (高级语言) 中间代码 (高级) 中间代码 (中级) 中间代码 (低级) float a[10][20]; a[i][j+2]; t1 = a[i, j+2] t1 = j + 2 t2 = i * 20 t3 = t1 + t2 t4 = 4 * t3 t5 = addr a t6 = t5 + t4 t7 = *t6 r1 = [fp - 4] r2 = [r1 + 2] r3 = [fp - 8] r4 = r3 * 20 r5 = r4 + r2 r6 = 4 * r5 r7 = fp – 216 f1 = [r7 + r6]