在编写自定义后端时,需要为每个目标实现llvm :: TargetFrameLowering中的哪些函数?

时间:2016-08-19 15:00:17

标签: llvm backend cpu-architecture custom-backend

我想做的是:我正在编写一个自定义后端,使用LLVM为新目标生成代码。当我开始使用MyOwnTargFrameLowering类时,我试图让事情变得尽可能简单。

我的问题:什么(如果构造函数之外有需求)是来自llvm :: TargetFrameLowering类的基本方法,用于任何自定义后端,必须覆盖的函数以进行最少量的自定义在LLVM后端?

据我所知,对于每个目标,都有必须为该特定体系结构覆盖的功能,但我的理解是,在每个LLVM中都有一些总是需要的功能。我从这样的事实中收集了这个想法:在某些LLVM类中,有些函数在描述中声明必须实现它们。

这是每个后端的帧降低类继承自llvm::TargetFrameLowering Class Reference

的类的引用

这里有一个大小合适的功能列表,这在很大程度上是我读过的。就像我说的那样,我知道它归结为你的架构,但是为了能够快速启动并运行起初,我想知道什么是最低限度。

我已经比较了LLVM中已经构建的其他目标后端,似乎构造函数(当然),emitPrologue,emitEpilogue和StackSlotSize都是相当标准的,但这是我的例子。据我所知,noboy有可能打算做一些如此基本的东西,但我现在正处于紧张状态,开始获得一些实际的代码输出。 ;)

赞赏正确方向的任何和所有提示或要点。如果这个问题太模糊,请告诉我。作为提问者,我有点新鲜,而不是在那里找到答案。

1 个答案:

答案 0 :(得分:0)

搜索关键字" pure virtual"在Class Reference中或查看代码并搜索" = 0"在函数声明之后。这些函数必须至少在派生类中实现。