我想这更多是一种好奇心,但我想知道是否有可能在编译后应用编译器优化。大多数优化技术是否高度依赖于IR,或者汇编代码可以相对容易地反复翻译?
我想这更多是一种好奇心,但我想知道是否有可能在编译后应用编译器优化。大多数优化技术是否高度依赖于IR,或者汇编代码可以相对容易地反复翻译?
虽然我不知道有多少标准工具可以做到这一点,但这已经完成了。
这篇论文描述了适用于卡玛柏 Alpha 处理器的优化程序,该程序在链接后运行,并介绍了编写它时面临的一些挑战。
如果你放宽一点定义,你可以使用基于性能指导的优化来检测二进制文件,然后根据其对缓存未命中、页面错误等可观察行为进行重写。
还有一些关于动态翻译的工作,其中你可以在解释器中运行现有的二进制文件,并使用标准的动态编译技术来尝试加速。 这是一篇详细介绍的论文。
希望这可以帮到你!
gcc -O3
快两倍。它将这些优化应用于已编译的ELF二进制文件。