寄存器分配图着色_compiler-construction – 图形着色寄存器分配器

对于我的编译器课程,我正在构建一个基于MIPS架构的图着色的寄存器分配器.我正在遵循Muchnick对我的实施的同样的待遇.

关于如何在这些分配器中处理函数的参数,Muchnick有点模糊.

我做了一些假设,并认为我会澄清相同的.

>从中级IR转换到较低级IR是这一步.尚未处理嵌套函数调用.我的想法是从右到左扫描函数调用,并向外放置最内层调用的IR.通过这种方式,我可以使用MIPS调用约定,将前几个参数分配给参数寄存器,剩余部分以最小量的溢出(仅1)进行堆叠.

>本书中的寄存器合并处理对我来说并不直观,因为它没有解决如何处理移动函数参数到固定参数寄存器的LIR代码.经过深思熟虑后,我得出的结论是,我不应该为参数传递动作注册合并.

对这些假设的反馈/想法非常受欢迎.

最佳答案 我认为您不希望在寄存器分配之前将参数传递从虚拟寄存器到参数寄存器的参数传递从函数调用实际参数(或者,对于函数调用复制的函数调用形式参数,反之亦然)进行寄存器合并.

但是,当您看到此类移动时,您可以向分配器标记提示,即移动目标参数寄存器是首选.当首选项没有适当干扰*时,您可以将其用于分配,结果是在分配后您将有一个移动rx,rx,您可以在以后轻松消除.

(当然,你可能会发现不止一个这样的提示,所以你选择最适合的一个,大多数(通常是所有)它们将被排除在其他干扰之外:同一个寄存器传递给多个呼叫;在一个循环中调用,等等..)

(*恰当地表示在虚拟寄存器的生命周期内,参数(实际)寄存器不会被其他方式使用或删除,例如通过嵌套函数调用或其他方式.(识别这可能就像检查虚拟干扰一样简单)寄存器.))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值