0

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

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

我知道对于每个目标,都有必须针对该特定架构覆盖的功能,但我的理解是,在每个 LLVM 中都有一些始终需要的功能。我从以下事实中得出这个想法:在某些 LLVM 类中,有一些函数在描述中声明它们必须被实现。

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

并且这里有一个很大的函数列表,我已经阅读了大部分内容。就像我说的那样,我知道这取决于您的架构,但是为了能够快速启动并开始运行,我想知道最低限度是什么。

我已经比较了 LLVM 中内置的其他目标后端,似乎构造函数(当然)、emitPrologue、emitEpilogue 和 StackSlotSize 都是相当标准的,但这是我的示例推测。我知道 noboy 可能从未打算做出如此基本的东西,但我有点赶时间,开始输出一些实际的代码。;)

任何和所有正确方向的提示或要点都值得赞赏。如果这个问题太模糊,请告诉我。我对成为提问者有点陌生,而不是已经在那里找到答案。

4

1 回答 1

0

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

于 2016-08-20T09:17:16.350 回答