c++ - 在 LLVM 中实现寄存器分配器

标签 c++ llvm compiler-optimization register-allocation

我正在研究完成本科类(class)的项目,包括对寄存器分配算法的实验分析。对于此任务,我使用了 LLVM 项目中的工具集。

但是,我已经阅读了 LLVM 项目的文档,但还没有找到将拼图的各个部分组合在一起的方法。目前我知道:

  • 通过工作让他们参与 LLVM,并且知道我必须实现 MachineFunctionPass pass .
  • 我按照一些建议查看 Basic Allocator代码,但听不懂。

我打算实现的分配器基于图形着色启发式,因为我很清楚此类方法的操作理论。

所以我寻找的是某种“如何”,一组定义的步骤来实现这样的分配器。这听起来像是粗心大意,但我必须在大约六个月内交付工作,我有点困惑。

如果有人能给我一些指导或引用任何支持 Material (除了自己的文档),我将不胜感激。

我的英语可能有点不对,我是巴西学生。

最佳答案

好吧,一段时间后我完成了我的项目并编写了如何使用 RegAllocBase 接口(interface)编写 LLVM 寄存器分配器的教程。

教程是用 reStructuredText 编写的,可以在 GitHub 上找到:https://github.com/nael8r/How-To-Write-An-LLVM-Register-Allocator

关于c++ - 在 LLVM 中实现寄存器分配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30360468/

相关文章:

c++ - 使用 SDL2.0.3 加载 PNG 图像

C++ 销毁顺序 : Calling a field destructor before the class destructor

c++ - 从 C++ 程序启动外部应用程序并将其附加到 Visual 2008 调试器,同时在 WinAPI 中调试主机

c++ - llvm InitializeNativeTarget() 未定义

c - 在 CPU 仿真中使用 switch case 时如何处理分支预测

recursion - 短路运算符和尾递归

c++ - vector 上的运算符 += 失败

c++ - 使用 libc++ 和 libstdc++ 的 void* 类型的字符串流行为差异

cuda - 如何在 CUDA 4.1/4.2/5.0 中输出 C/C++ 带注释的 PTX

c - gcc:用 `-mavx -mprefer-avx128`优化单个函数