首页 理论教育 编译原理与实践:中间代码排序与DAG图

编译原理与实践:中间代码排序与DAG图

时间:2023-11-17 理论教育 版权反馈
【摘要】:考察下列中间代码序列:T1:=A+BT2:=A-BF:=T1*T2T1:=A-BT2:=A-CT3:=B-CT1:=T1*T2G:=T1*T3画出DAG图,并对其结点排序,写出排序后的中间代码。

编译原理与实践:中间代码排序与DAG图

1.目标代码生成中需要着重考虑的问题都有哪些?

2.待用信息和活跃信息的作用是什么?

3.某基本块的中间代码序列如下:

T

1:=A-B

T2:=T1+C

T3:=T2+D

W:=T3+T2

假设R0和R1为可用的寄存器,W是基本块出口之后的活跃变量,请用简单代码生成算法生成其目标代码,并列出其变量及代码附加信息,以及列出变量存放情况和寄存器占用情况。

4.某基本块的中间代码序列如下:

T1:=A+B

T2:=C-T1

T3:=D*E

T4:=F+G

T5:=T3-T4

W:=T2/T5

假设R0和R1为可用的寄存器,W是基本块出口之后的活跃变量,请用简单代码生成算法生成其目标代码,并列出变量存放情况和寄存器占用情况。

5.DAG代码优化。考察下列中间代码序列:

T1:=A+B

T2:=A-B

F:=T1*T2(www.xing528.com)

T1:=A-B

T2:=A-C

T3:=B-C

T1:=T1*T2

G:=T1*T3

画出DAG图,并对其结点排序,写出排序后的中间代码。

6.对于下面的C语言源程序

i=5;

++i;

return i+1;

编译器将产生如下的中间代码:

i=5

i+=1

T1=i

T1=i

T1+=1

retreg=T1

ret

这段代码的执行效率很低,请利用窥孔优化技术,删去那些低效或无用的指令。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈