Optimization 寄存器分配算法的效率

Optimization 寄存器分配算法的效率,optimization,compiler-construction,project,graph-theory,register-allocation,Optimization,Compiler Construction,Project,Graph Theory,Register Allocation,我正在尝试使用图着色对寄存器分配进行研究/项目,在这里我将测试不同场景中不同优化寄存器分配算法的效率 我怎么开始?我可以测试它们的先决条件和依据是什么? 我可以使用哪些算法 补充: 实际上,我想要一个快速的方法来解决这个问题,我还没有做过更深入的研究,但我想无耻地提交一份现成的分析到我的项目中,并稍微强调“效率”。即哪种类型的优化技术最适合不同的任务/编译器/解释器 所以我的主要任务是如何在我的程序中实现寄存器分配。 我在Core2Duo机器上使用64位Linux系统。我知道C,C++和java

我正在尝试使用图着色对寄存器分配进行研究/项目,在这里我将测试不同场景中不同优化寄存器分配算法的效率

我怎么开始?我可以测试它们的先决条件和依据是什么? 我可以使用哪些算法

补充:

实际上,我想要一个快速的方法来解决这个问题,我还没有做过更深入的研究,但我想无耻地提交一份现成的分析到我的项目中,并稍微强调“效率”。即哪种类型的优化技术最适合不同的任务/编译器/解释器

所以我的主要任务是如何在我的程序中实现寄存器分配。 我在Core2Duo机器上使用64位Linux系统。我知道C,C++和java。 谢谢大家!

基线-大概您需要一组测试用例-从简单到复杂-测试大量寄存器使用,特别是溢出。我相信有一些通用/标准的。您可能希望在一个基本的编译器和一个高性能的现代编译器上对它们进行分析,并分析汇编输出以了解发生了什么。这会给你一个基线

开发-选择或编写一个编译器。一个老的是-它的旧,小,简单,但有一本书,解释它的全部。较新的替代方案可能是LLVM,也可能是GCC。有些编译器已经用于这类研究——您甚至可以使用命令行开关在一系列分配器之间切换


或者,澄清这个问题——我们是在谈论C风格的语言吗?动态的?紧张?你想知道什么?CPU的目标是什么?

LCC是非优化的,对吗?没关系,我假设您需要许多不同的编译器,因为没有两个版本的同一个编译器,也没有两个编译器以相同的方式实现相同的优化

我认为您需要首先关注反汇编程序,然后分析代码流,然后注册使用情况。实际上,在此之前,再次选择ISA指令集,相同的代码相同的编译器将根据特定目标,甚至同一系列中的特定目标,为相同的优化生成不同的结果


优化算法导致的寄存器分配结果是一个非常广泛和动态的话题。这与标杆管理不相上下。尽管这听起来仍然是一个有趣的话题,但我认为您会发现,无论有没有优化,无论有没有几十个通用寄存器,大多数编译器最终只使用了少数几个寄存器。几个用于传递参数,每个函数一个用于实现函数

您可能需要将此问题更具体一点,或者将其设置为CW。就目前而言,没有简单的答案。嗨!谢谢你的回复,我已经补充了我的问题。谢谢