在LLVM中实现注册分配器

时间:2015-05-20 21:13:36

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

我正在完成我的完成本科课程的项目,包括寄存器分配算法的实验分析。对于此任务,我使用的是LLVM项目中的一组工具。

但是,我已经阅读了LLVM项目的文档,但还没有找到将拼图块放在一起的方法。到目前为止,我知道:

  • 作为传递工作,让他们参与LLVM并知道我必须实现MachineFunctionPass pass
  • 我按照一些建议来查看Basic Allocator代码,但不太了解。

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

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

如果有人能给我一些指导或参考任何辅助材料(除了自己的文件),我将不胜感激。

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

1 个答案:

答案 0 :(得分:0)

好吧,过了一段时间我完成了我的项目,并编写了一个如何使用return 5接口编写LLVM寄存器分配器的教程。

本教程是用transform :: String -> String transform [] = [] transform [x] = x transform (x:y:xs) | x == "a" && y == "b" = "a" ++ (transform xs) | x == "b" && y == "a" = "b" ++ (transform xs) | x == "b" && y == "b" = "a" ++ (transform xs) | x == "a" && y == "a" = "aaa" ++ (transform xs) 编写的,可以在GitHub上找到:https://github.com/nael8r/How-To-Write-An-LLVM-Register-Allocator