窥孔优化pass

简介

窥孔优化(peephole optimizer),它的操作是这样的,使用一个滑动窗口,对窗口内的指令序列进行分析,如果窗口内的指令序列可以被替换成一个更好的等价序列,那么就会对指令进行替换。
窥孔优化的一些常见示例包括:

  1. 消除冗余的加载和保存指令。
LD R0, a
ST a, R0
替换为
LD R0, a
  1. 消除不可到达代码。
if debug == 1 goto L1
goto L2
L1:print debugging information
L2:
如果debug被设置为0
替换为
L2:
  1. 控制流优化。
goto L1
...
L1: goto L2
替换为
goto L2
...
L1: goto L2
  1. 代数化简和强度消减。
add r1, r0, 0
替换为
mov r1, r0
  1. 使用机器特有的指令。
    目标机可能会有一些能够高效实现某些特定运算的硬件指令。检测允许使用这些指令的情况可以显著的减低运行时间。

原理

多个add转MAD

id: 0 add r0, r1, r2
id: 1 add r3, r1, r0
id: 2 add r4, r1, r3
id: 3 mov r5, r4
转
id2: mad r4, r1, 3, r2

在一个基本块中遍历指令,
id:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值