【摘要】:考察下列中间代码序列:T1:=A+BT2:=A-BF:=T1*T2T1:=A-BT2:=A-CT3:=B-CT1:=T1*T2G:=T1*T3画出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是基本块出口之后的活跃变量,请用简单代码生成算法生成其目标代码,并列出变量存放情况和寄存器占用情况。
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图,并对其结点排序,写出排序后的中间代码。
i=5;
++i;
return i+1;
编译器将产生如下的中间代码:
i=5
i+=1
T1=i
T1=i
T1+=1
retreg=T1
ret
这段代码的执行效率很低,请利用窥孔优化技术,删去那些低效或无用的指令。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。