是否可以在我的软件中嵌入LLVM Interpreter并且有意义吗?

And*_*uel 7 interpreter llvm

假设我有一个软件,我想制作跨平台插件.您编译虚拟机的插件,运行我的软件的任何平台都可以运行此代码.

我想知道是否有可能为此目的使用LLVM解释器和字节码.此外,我想知道使用LLVM是否有意义而不是其他东西,也就是LLVM是为什么制作的?

seh*_*ehe 7

我不确定LLVM是为它而设计的.但是,我怀疑使用LLVM 1还没有做任何事情

基于其他虚拟机的脚本引擎专门为创建工作:

如果您正在寻找可嵌入的虚拟机:

  • IKVM支持在桥接模式下嵌入JVM和CLR(可互操作)
  • Parrot支持嵌入(并包含一个Python解释器;请注意,你可以运行python字节码图像)
  • Perl具有类似的架构并支持嵌入
  • Javascript支持嵌入(不确定v8的体系结构,但我想它会使用虚拟机)
  • Mono的CLR引擎支持嵌入:http://www.mono-project.com/Embedding_Mono

1包括编译cavascript信息到javascript以在浏览器中运行...


SK-*_*gic 6

理论上,存在有限的LLVM IR子集,其可以跨各种平台移植.你不应该指定对齐,你不应该指向整数类型的指针,你必须避免内在,等等.这意味着 - 你不能立即使用股票C编译器生成的代码(llvm-gcc,Clang,等等),除非您为其指定一个有限的目标并实现清理LLVM传递.另一个问题是不保证来自不同LLVM版本的bitcode格式兼容.

在实践中,我不会去那里.Mono是一个相当小巧,可嵌入,快速的虚拟机,所有.NET工具堆都可用.VM本身非常低级(只要您不关心可验证性).


小智 5

有VMIR(https://github.com/andoma/vmir),这是一个LLVM bitcode解释器/ JIT引擎,旨在嵌入到其他应用程序中.

免责声明:我是它的作者,它仍然在进行中,但工作得很好.