Compiler construction 正在尝试写入LLVM后端。没有好的教程可用

Compiler construction 正在尝试写入LLVM后端。没有好的教程可用,compiler-construction,llvm,llvm-ir,llvm-3.0,Compiler Construction,Llvm,Llvm Ir,Llvm 3.0,我正在尝试为我最近设计的定制处理器编写LLVM后端 我试着在学校里学习官方教程 但它是如此的模糊,如此的不完整和模糊,以至于我没能理解它 然后我开始在网上搜索其他教程,所有这些教程都有与原始教程相同的症状。作者似乎假设了大量的预读,并在没有必要的初步解释的情况下编写了他们的教程 我怎样才能找到一个教程或任何可以让我在LLVM中编写功能后端的东西 --更新:我看到两张反对票和两张赞成票。反对票说我的问题与节目无关。我想知道主持人是如何得出结论,编写编译器与编程无关。我也遇到过同样的问题,而且确实没

我正在尝试为我最近设计的定制处理器编写LLVM后端

我试着在学校里学习官方教程

但它是如此的模糊,如此的不完整和模糊,以至于我没能理解它

然后我开始在网上搜索其他教程,所有这些教程都有与原始教程相同的症状。作者似乎假设了大量的预读,并在没有必要的初步解释的情况下编写了他们的教程

我怎样才能找到一个教程或任何可以让我在LLVM中编写功能后端的东西


--更新:我看到两张反对票和两张赞成票。反对票说我的问题与节目无关。我想知道主持人是如何得出结论,编写编译器与编程无关。

我也遇到过同样的问题,而且确实没有好的教程。但希望我发现的其中一些能够帮助你,如果它仍然是真实的,或者其他人读过这篇文章


首先,有一个常见的建议是复制粘贴现有后端并为您的CPU修改它。但这不是一个好的做法,因为你不明白自己在做什么。因此,我找到了一个关于llvm体系结构的简短描述。它可以帮助你很多。还有一个逐步实现CPU0处理器后端的步骤。其他来源是您自己很容易找到的错误幻灯片。

LLVM的大多数后端都是通过复制现有后端然后对其进行调整来启动的。目前最合适的(读:simple)后端是Lanai(如果您正在实现一个简单的RISC)或Hexagon(如果您正在实现一个VLIW CPU)。否则,您将花费太多时间为后端设置基础架构。我希望我们有一个“模板”的基本后端,但是没有人维护这样的东西。另外,首先要看的事情:IR到DAG的降低是后端的一个中心点(请参见*ISelLowering.cpp),从那里开始,然后定义isel模式以及必要时的预传递和后传递。而且,这样做不太可能有帮助。请随意在llvm开发人员列表中提出您的问题。我正试图让事情变得有意义,但进展非常缓慢。是的,我将SPARC文件夹复制到/lib/target下的一个新文件夹中,并试图理解其中的内容。例如,关于如何调用\emph{tablegen}命令,甚至没有一个示例。无论如何,我是一名博士生,已经习惯了这些肮脏的道路和障碍。如果我设法让我的后端工作,那么我将编写一个适当的教程,并将作出贡献。只需依靠CMake为您调用tablegen,无需手动执行,即使是调试。所有教程(以及上游未包含的过时后端)的问题是,情况变化太快,这些内容很快就会过时。在以前的llvm开发人员会议上已经有过讨论,您可能希望从以下内容开始: