Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 是否可以优化已编译的二进制文件?_Optimization_Assembly_Compiler Construction - Fatal编程技术网

Optimization 是否可以优化已编译的二进制文件?

Optimization 是否可以优化已编译的二进制文件?,optimization,assembly,compiler-construction,Optimization,Assembly,Compiler Construction,我想这更像是好奇,但我想知道是否有可能在编译后应用编译器优化。大多数优化技术是否高度依赖IR,或者组装是否可以相当容易地来回转换?这已经完成,尽管我不知道有多少标准工具可以做到这一点 对于链接后工作的Compaq Alpha处理器,已经完成了链接,并且在编写链接时遇到了一些挑战 如果您对定义有点紧张,您可以使用配置文件引导优化来插入二进制文件,然后根据其可观察到的缓存未命中、页面错误等行为重写它 在动态翻译方面也有一些工作,您可以在解释器中运行现有的二进制文件,并使用标准的动态编译技术来加快速度

我想这更像是好奇,但我想知道是否有可能在编译后应用编译器优化。大多数优化技术是否高度依赖IR,或者组装是否可以相当容易地来回转换?

这已经完成,尽管我不知道有多少标准工具可以做到这一点

对于链接后工作的Compaq Alpha处理器,已经完成了链接,并且在编写链接时遇到了一些挑战

如果您对定义有点紧张,您可以使用配置文件引导优化来插入二进制文件,然后根据其可观察到的缓存未命中、页面错误等行为重写它

在动态翻译方面也有一些工作,您可以在解释器中运行现有的二进制文件,并使用标准的动态编译技术来加快速度。这就详细说明了这一点


希望这有帮助

一些编译器后端有一个窥视孔优化器,它基本上就是这样做的,在提交到表示IR的程序集之前,它有一点机会进行优化

基本上你会想做同样的事情,从二进制代码到机器代码。不是同一个工具,而是同一种过程,检查一些大小的代码块并进行优化

现在你会遇到的问题是,例如,你可能有一些变量在C中被标记为volatile,因此它们在二进制中的使用效率非常低,优化器不会知道程序员想要在那里,并且可能最终优化了它


你当然可以把它带回IR再转发,没有什么能阻止你这么做。

最近有人对这个领域感兴趣。亚历克斯·艾肯(Alex Aiken)在斯托克城的项目正是这样做的,取得了一些令人印象深刻的成果。在一个例子中,他们的优化器在OpenSSL的RSA库中找到了一个蒙哥马利乘法步骤的函数,其速度是gcc-O3的两倍。它将这些优化应用于已编译的ELF二进制文件


我现在知道的二进制到二进制编译是由DEC为alpha NT“端口”和transmeta创建的。都是十多年前的事了。你怎么称呼IR?对于一家愿意专注于语言无关优化器的公司来说,后期优化可能是一个很好的机会。无论如何,我怀疑从汇编代码中检索程序语义比从源代码中检索要困难得多,这就是为什么在市场上找不到这样的产品。链接2坏了:(^它没有坏,只是在付费墙后面。我在大学里学得很好。