编写自定义后端时,需要为每个目标实现 llvm::TargetFrameLowering 中的哪些功能?
Which functions from the llvm::TargetFrameLowering are required to be implemented for every target when writing a custom backend?
我想做什么:我正在编写自定义后端以使用 LLVM 为新目标生成代码。当我开始使用 MyOwnTargFrameLowering class 时,我试图让事情尽可能简单。
我的问题:对于任何自定义后端,llvm::TargetFrameLoweringClass 中的基本方法(如果在构造函数之外有要求)是什么?为 LLVM 后端中的最小定制量而被覆盖?
我知道对于每个目标,都有一些函数必须为特定的体系结构覆盖,但据我所知,在每个 LLVM 中,都有一些函数是始终需要的。我从这样一个事实中得出这个想法,即在某些 LLVM classes 中有一些函数在描述中声明必须实现它们。
这是class每个后端帧降低的参考class继承自llvm::TargetFrameLowering Class Reference
这里有一个很大的功能列表,我已经通读了大部分内容。就像我说的,我知道这取决于您的架构,但只是为了能够快速启动并 运行 一开始,我想知道最低限度是多少。
我已经比较了 LLVM 中内置的其他目标后端,似乎构造函数(当然)、emitPrologue、emitEpilogue 和 StackSlotSize 都是非常标准的,但这是我的示例推测。我知道 noboy 可能曾经打算制作如此基本的东西,但我有点时间紧迫,开始获取一些实际代码来输出。 ;)
对正确方向的任何和所有提示或要点表示赞赏。如果这个问题太模糊,请告诉我。我对提问者有点陌生,而不是已经找到答案了。
在 Class 参考中搜索关键字 "pure virtual" 或查看代码并在函数声明后搜索“= 0”。这些是至少必须在派生 class.
中实现的功能
我想做什么:我正在编写自定义后端以使用 LLVM 为新目标生成代码。当我开始使用 MyOwnTargFrameLowering class 时,我试图让事情尽可能简单。
我的问题:对于任何自定义后端,llvm::TargetFrameLoweringClass 中的基本方法(如果在构造函数之外有要求)是什么?为 LLVM 后端中的最小定制量而被覆盖?
我知道对于每个目标,都有一些函数必须为特定的体系结构覆盖,但据我所知,在每个 LLVM 中,都有一些函数是始终需要的。我从这样一个事实中得出这个想法,即在某些 LLVM classes 中有一些函数在描述中声明必须实现它们。
这是class每个后端帧降低的参考class继承自llvm::TargetFrameLowering Class Reference
这里有一个很大的功能列表,我已经通读了大部分内容。就像我说的,我知道这取决于您的架构,但只是为了能够快速启动并 运行 一开始,我想知道最低限度是多少。
我已经比较了 LLVM 中内置的其他目标后端,似乎构造函数(当然)、emitPrologue、emitEpilogue 和 StackSlotSize 都是非常标准的,但这是我的示例推测。我知道 noboy 可能曾经打算制作如此基本的东西,但我有点时间紧迫,开始获取一些实际代码来输出。 ;)
对正确方向的任何和所有提示或要点表示赞赏。如果这个问题太模糊,请告诉我。我对提问者有点陌生,而不是已经找到答案了。
在 Class 参考中搜索关键字 "pure virtual" 或查看代码并在函数声明后搜索“= 0”。这些是至少必须在派生 class.
中实现的功能