首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寄存器分配算法的效率

问寄存器分配算法的效率
EN

Stack Overflow用户
提问于 2010-04-19 14:49:50
回答 2查看 595关注 0票数 0

我试图做一个关于寄存器分配的研究/项目使用图着色,在这里我要测试不同的优化寄存器分配算法在不同的情况下的效率。

我该怎么开始?我测试它们的先决条件和依据是什么?我能用什么算法?

加法

实际上,我想要一个快速的解决办法,我还没有做更深入的研究,但我想(无耻地)向我的项目提交一份现成的分析,稍微强调一下“效率”。也就是说,哪种类型的优化技术最适合不同的任务/编译器/解释器。

因此,我的主要任务是(如何)在我的程序中实现注册分配。我在Core2双机上使用64位Linux系统.我知道C,C++和Java。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2010-04-19 15:38:51

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

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

或者,澄清的问题-我们是在谈论C风格的语言吗?动态的?JITted?你想搞清楚什么?CPU的目标是什么?

票数 0
EN

Stack Overflow用户

发布于 2010-04-19 16:43:29

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

我认为您需要首先关注反汇编程序,然后分析代码流,然后注册使用情况。实际上,在选择ISA (指令集)之前,相同的代码相同的编译器将为相同的优化产生不同的结果,这取决于特定的目标,甚至同一家族中的特定目标。

由于优化算法而引起的寄存器分配结果是一个非常广泛和动态的话题。这与基准标准不相上下。尽管这听起来仍然是一个有趣的话题,但我想您会发现,不管有没有优化,有或没有几十个通用寄存器,大多数编译器最终只使用少数几个寄存器。(有几个函数需要传递参数,每个函数有几个函数用于实现该函数)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2668368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档