我正在使用Mono (http://www.mono-project.com/Mono:Runtime:Documentation:LLVM),看起来他们在这里使用LLVM作为JIT,而不是作为代码生成器。但是根据文档,在生成本机代码之前,它们要经过LLVM:
所以,我想知道是否有任何方法来捕捉这个第三阶段,并使用IR为我的LLVM后端提供。这将允许我获得C#到LLVM前端免费。
谢谢你的帮助!
发布于 2011-12-25 19:35:25
Mono的LLVM支持通过尝试从适当的libmono-llvm.so加载$libdir来工作,例如在OSX上,/usr/bin/mono将加载/Library/Frameworks/Mono.framework/Libraries/libmono-llvm.dylib。请参阅mono/mini/Min-llvm.h中的LLVM加载代码,特别是负载()和负载()。
因此,如果您将LLVM后端mono-llvm命名为LLVM后端mono-llvm,那么当您将mono作为mono --llvm启动时,将使用它。尽管如此,mono_llvm_load()似乎需要来自mono-llvm库的特定导出,比如mono_llvm_init和mono_llvm_cleanup,所以我确信您的LLVM后端需要做一些额外的工作,以便允许Mono使用它,而且我也不确定在哪里可以找到它(除了在Mono的源代码中为"LLVM“进行grepping之外)。
这也意味着LLVM后端可能不能从预先构建的mono中重用;也就是说,为了使用您的LLVM后端,您可能需要构建自己的mono,因为预构建mono将提供一个可能不可插入的mono-llvm后端。(我不知道LLVM后端的可插入性和不可插拔性。)
https://stackoverflow.com/questions/6354077
复制相似问题