41|后端优化:生成LIR和指令选择
宫文学
你好,我是宫文学。
前面几节课中,我们讨论的主要是中端的优化。中端优化是跟具体硬件关系并不大,但由于我们还要生成针对具体 CPU 的汇编代码或机器码,所以做完中端优化之后,我们还要针对具体 CPU 的特性来做一些优化,也就是后端优化。
其实,我们已经接触过一些后端优化技术了。比如,之前我们已经讲过寄存器分配算法、尾调用和尾递归的优化,这些基本上都属于后端优化。不过,那个时候,我们是从 AST 直接生成汇编代码,然后在这个过程中做一些后端优化的。
在第三部分优化篇中,我们引入了新的、基于图的 IR,进行了很多与硬件无关的优化。用这个基于图的 IR 来做后端优化,效果又怎样呢?接下来,我们就要修改以前的生成汇编代码的逻辑,改成从这个 IR 来生成汇编代码,并在这个过程中做一些优化。
今天这一节课,我就带你从中端过渡到后端,看看如何实现后端优化,并生成目标代码。这其中包括 IR 的 Lower、生成 LIR 和指令选择,以及寄存器分配、指令重排序、窥孔优化和汇编代码的生成,等等工作。不过有些知识点我之前已经讲过了,还有一些知识点不是我们这门课的重点,我就不再展开讲了,重点帮你贯穿一下整个过程。
首先,我们先了解一下给 IR 做 Lower 的过程。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了后端优化中生成LIR和指令选择的过程。首先解释了后端优化与中端优化的关系,强调了后端优化需要根据具体CPU特性进行优化。文章详细介绍了IR的Lower过程,将高级抽象的节点转化为具体的指令操作,最终转化为与具体CPU架构相关的LIR格式。进一步讨论了指令选择的算法,包括条件跳转指令和内存访问的指令选择。通过举例说明了指令选择的工作原理,强调了目标CPU能够用更简洁的方式完成多项运算工作,从而提高效率。文章还提到了寄存器分配、指令重排序和窥孔优化等后端优化工作。最后,总结了IR的Lower过程、LIR与具体CPU架构的对应关系、指令选择算法以及后端优化的工作内容。整体来看,本文对于想要深入了解后端优化的读者具有很高的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一门编程语言》,新⼈⾸单¥59
《手把手带你写一门编程语言》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 奋斗的蜗牛太牛了,感觉打开了新世界2021-11-172
- ifelse学习打卡2022-10-04归属地:浙江
收起评论