我正在寻求开发一个基于 LLVM 的编译器,这将需要一个新的后端目标。
LLVM 后端指南展示了如何在设定的目录结构(
lib/Target/**
)中的 LLVM 源下开发新目标,以与现有的构建系统集成,并且据我所知,使用诸如llc
之类的工具集成、llvm-config
等。
是否可以从源代码中开发新目标,并将其与 LLVM 集成?
我知道在添加新的独立于目标的优化和分析过程时这是可能的。例如,它们可以从源代码编写和编译,并通过
opt
工具加载。我认为可能有类似的方法来编写新目标。
我想这样做是为了在某种程度上减少我的项目和 LLVM 之间的耦合量,因为它让我在 VC、构建/标签/IDE 等中额外增加一百万行代码。
不幸的是,这是不可能的。后端通过配置时代码生成等与主 LLVM 代码库紧密相连。
安东, 我也在寻找使用 LLVM 创建新目标的可能性。 如果新目标能够与 LLVM 框架分离,那就太好了。例如,我的所有新目标代码可能位于几个 .so 文件中。如果相应的 .so 文件存在,则可以使用新目标。
您对可能性有什么建议吗?