编译原理-9-代码生成

目录

1 代码生成器的主要任务

2 一个简单的目标机模型

3 指令选择

4 寄存器的选择

5 寄存器选择函数getReg的设计

6 窥孔优化


1 代码生成器的主要任务

(1)指令选择

         选择适当的目标机指令来实现中间表示(IR)语句

(2)寄存器分配和指派
          把哪个值放在哪个寄存器中
(3) 指令排序
         按照什么顺序来安排指令的执行

2 一个简单的目标机模型

三地址机器模型
    加载、保存、运算、跳转等操作
    内存按字节寻址
    n个通用寄存器 R0 , R1 , …, Rn -1
    假设所有的运算分量都是整数
    ​​​​​​​指令之间可能有一个标号

3 指令选择

指令选择:为中间表示语句选择合适的目标指令序列

4 寄存器的选择

(1)三地址语句的目标代码生成
(2)寄存器描述符和地址描述符
(3)基本块的收尾处理
对于一个在基本块的出口处可能 活跃 的变量 x , 如果它 的地址描述符表明它的值没有存放在 x 的内存位置上 , 则生成指令“ ST x , R ( R 是在基本块结尾处存放 x 的寄存器 )
(4)管理寄存器和地址描述符

5 寄存器选择函数getReg的设计

6 窥孔优化

窥孔 ( peephole )是程序上的一个小的滑动窗口
窥孔优化 是指在优化的时候,检查目标指令的一个滑动 窗口 ( 即窥孔 ) ,并且只要有可能就在窥孔内用更快或更短的指令来替换窗口中的指令序列
也可以在 中间代码生成 之后直接应用窥孔优化来提高中间表示形式的质量
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值