中间代码生成中的优化

1)  消除仅初始化一次的临时变量:遍历所有中间变量,对于仅仅在t := x时进行
过一次赋值的临时变量t置标记,对于有标记的临时变量,遍历中间变量,将
t全部替换为x,并且删除原有的t := x,如return  0;会产生中间代码t1  :=  #0, 
return t1经过优化后变为return #0 
2)  常量计算:遍历所有中间变量,对于x := y +/-/*// z的中间代码,若y、z均为
常量,则计算出x的值,并将中间代码中的x全部替换为新的常量,并且移除
当前的中间代码,如x = #5 + #3, y = x会优化为y = #8 
3)  相邻标签:遍历所有中间变量,对于相邻的标签,用后一个标签替换掉前面一
个,如LABEL label1,LABEL label2,…,GOTO label 1 会优化为LABEL label2,…,GOTO 
label 2 
4.  程序基本流程:由于没有全局变量,因此中间代码的生成在对一个函数的语义分析
结束后进行,语句的生成在每个函数里面进行,在每个CompSt里处理符号表index
的移动,处理变量定义和语句,生成中间代码到内存中的list 中,然后进行优化,
第一次优化是遍历list,消除仅初始化一次的临时变量,然后再次遍历list,进行第
二次优化,计算出常量运算的值和消除相邻的标签,最后将中间代码写入指定的文
件 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值