单声道LLVM和LLVM-IR

问题描述

我正在玩Mono LLVM(http://www.mono-project.com/Mono:Runtime:Documentation:LLVM),似乎他们在这里将LLVM用作JIT,而不是真正用作代码生成器。但是根据文档,它们在生成本机代码之前先经过LLVM-IR: 首先,从IL代码生成正常的单JIT IR IR转换为SSA形式 IR转换为LLVM IR LLVM IR由LLVM编译成本地代码 因此,我想知道是否有任何方法可以捕获此第三阶段并使用IR来馈送我的LLVM后端。这样一来,我就可以免费获得C#到LLVM-IR前端。 谢谢你的帮助!     

解决方法

        Mono的LLVM支持通过尝试从适当的``1''中加载``0''来工作,例如在OSX上,
/usr/bin/mono
将加载
/Library/Frameworks/Mono.framework/Libraries/libmono-llvm.dylib
。请参阅mono / mini / mini-llvm.h中的LLVM加载代码,特别是mono_llvm_load()和try_llvm_load()。 因此,如果您将LLVM后端命名为
mono-llvm
,则在将mono启动为
mono --llvm
时将使用它。就是说,ѭ6似乎需要从
mono-llvm
库中进行特定的导出,例如
mono_llvm_init
mono_llvm_cleanup
,因此我确定您的LLVM后端需要做一些额外的工作才能允许Mono使用它,我\'我不确定在哪里可以找到(不是在Mono \的源代码中对“ LLVM \”进行ѭ10ping操作...)。 这也意味着LLVM后端可能无法从预构建的mono中重用;也就是说,您可能需要构建自己的Mono才能使用LLVM后端,因为prebuild mono将提供可能无法插入的
mono-llvm
后端。 (我不知道LLVM后端的可插拔性。)     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...