编译原理(八)独立于机器的代码优化

代码优化

通过程序变换(局部变换和全局变换)来改进程序,称为优化

基本块和流图

  • 对每个基本块从最后一个语句反向扫描到第一个语句,可以得到下次引用信息,这样就可以制造出引用链,从而通过是否后面还有引用做出相应的编译优化:

数据流分析介绍:

B1的入口,是开始都为0,出口生成d1,d2,d3,被注销的是d4,d5,d6,d7所以是111 0000

对于B2来说,是生成d4,d5,注销d1,d2,d7,所以取并集是001 1100

对于B3来说是 生成d6,删除d3,取并集是000 1110

如下:


 

对于这种递归中直接返回递归调用的叫做尾递归,关于尾递归,编译器的处理方式是:

这样的话,尾递归可以重用上一次递归的活动记录,而上一次活动记录本来也是无用的了,这样减少了销毁和创建活动记录的时间,编译器通过这种方式做了优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值