编译原理 第十章 代码优化

第十章 代码优化

优化:指对程序进行等价变换,使得从变换后的程序出发,能生成更有效的目标代码。

  • 前端优化:在目标代码生成以前,对语法分析后的目标代码进行优化
  • 后端优化:在生成目标代码时进行优化,依赖于具体的计算机指令系统

请添加图片描述

10.1 概述

优化原则:

  • 等价原则:经过优化的代码不应改变程序运行的结果
  • 有效原则: 有效原则:使优化后所产生的目标代码运行时间较短,占用的存储空间较小
  • 合算原则:应尽可能以较低的代价取得较好的优化效果

10.2局部优化

10.2.1 基本块和流图

  • 基本块:指程序中一段顺序执行的语句序列,其中只有一个入口和一个出口,入口就是其中的第一条语句,出口是其中最后一条语句

请添加图片描述

请添加图片描述

基本块的划分方法
请添加图片描述

请添加图片描述

  • 流图: 一基本快为节点,通过有向图表示
    一个基本块的入口语句是程序的第一条语句,则此结点为首结点

10.2.2 基本快的DAG表示及优化

基本块的DAG

请添加图片描述

请添加图片描述

过程叙述起来挺麻烦的,但是实际执行挺简单的:
请添加图片描述

请添加图片描述

这里对b重新赋值了,生成附加y的节点的时候,不能用n2,而是要用新生成的,标号更大的n4.因此,在搜索 标号b的时候要从后向前搜索。

DAG图中的数组处理

a[i] 为右值时, 将 a [] j 拆开
请添加图片描述

当 a[i] 为左值,对 a[i]赋值的时候,将a[i]看作是一个整体。
请添加图片描述

请添加图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值