3.中间代码产生 ■任务:对各类不同语法范畴按语言的语义 进行初步翻译。 ■依循的原则:语义规则 ■ 中间代码:三元式,四元式,树形结构等 ■Z:=X+0.618*Y翻译成四元式为 (1) 米 0.618 Y T1 (2) + X T1 T2 (3) := T2 Z 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 3. 中间代码产生 ◼ 任务:对各类不同语法范畴按语言的语义 进行初步翻译。 ◼ 依循的原则:语义规则 ◼ 中间代码:三元式,四元式,树形结构等 ◼ Z:=X + 0.618 * Y 翻译成四元式为 (1) * 0.618 Y T1 (2) + X T1 T2 (3) := T2 _ Z
4.优化 任务:对于前阶段产生的中间代码进行 加工变换,以期在最后阶段产生更高效 的目标代码。 ■人 依循的原则:程序的等价变换规则 F0RK:=1T0100D0 BEGIN X:=I+1; M:=I+10*K; N:=J+10米K; END 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 4. 优化 ◼ 任务:对于前阶段产生的中间代码进行 加工变换,以期在最后阶段产生更高效 的目标代码。 ◼ 依循的原则:程序的等价变换规则 FOR K:=1 TO 100 DO BEGIN X:=I+1; M := I + 10 * K; N := J + 10 * K; END
中间代码(一) 序号OPR OPN1 OPN2 RESULT 注释 3 := K K:=1 j 100 K (10) if (100<K) 9t0(10) I 1 400次加法 +1 3456789 10 K 0*K *+*十 200次乘法 I T1 I+T1 10 K T2 T2:=10*K J T2 N N:=J+T2 十 1 K K:=K+1 (2) goto (2) (10) 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 中间代码(一) 序号 OPR OPN1 OPN2 RESULT 注释 (1) := 1 K K:=1 (2) j< 100 K (10) if (100<K) goto (10) (3) + I 1 X X:=I+1 (4) * 10 K T1 T1:=10*K (5) + I T1 M M:=I+T1 (6) * 10 K T2 T2:=10*K (7) + J T2 N N:=J+T2 (8) + K 1 K K:=K+1 (9) j (2) goto (2) (10) 400次加法 200次乘法
转换后的等价代码(二) 序号OPR OPN1 OPN2 RESULT 注释 I 1 X X:=I+1 12345 := I M M:=I ==K J I 1 301次加法 100 K 100<K) got0(10) 678 M 10 M M:=M+10 N 10 N N:N+10 + K 1 K K:=K+1 j (5) goto (5) (10) 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 转换后的等价代码(二) 序号 OPR OPN1 OPN2 RESULT 注释 (1) + I 1 X X:=I+1 (2) := I M M:=I (3) := J N N:=J (4) := 1 K K:=1 (5) j< 100 K (10) if (100<K) goto (10) (6) + M 10 M M:=M+10 (7) + N 10 N N:=N+10 (8) + K 1 K K:=K+1 (9) j (5) goto (5) (10) 301次加法
5.目标代码产生 ■ 任务:把中间代码变换成特定机器上的目 标代码。 ■人 依赖于硬件系统结构和机器指令的含义 ■目标代码三种形式: 口绝对指令代码:可直接运行 口可重新定位指令代码:需要连接装配 口汇编指令代码:需要进行汇编 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 5. 目标代码产生 ◼ 任务: 把中间代码变换成特定机器上的目 标代码。 ◼ 依赖于硬件系统结构和机器指令的含义 ◼ 目标代码三种形式: 绝对指令代码: 可直接运行 可重新定位指令代码: 需要连接装配 汇编指令代码: 需要进行汇编