Compiler construction 可以使用LLVMIR作为通用语言在编程语言之间进行传输吗?

Compiler construction 可以使用LLVMIR作为通用语言在编程语言之间进行传输吗?,compiler-construction,llvm,programming-languages,transpiler,Compiler Construction,Llvm,Programming Languages,Transpiler,我使用的是一种晦涩难懂的编程语言,它在第三方库方面没有流行语言那么多的选择。不过,我使用的语言很灵活,修改语言也很容易。假设该语言是公共Lisp。让我们假设CL有一个编译器编译成LLVM,而语言+库(比如说C++和OpenCV)我想从CL中使用,也有LLVM编译器。因此,我可以使用OpenCV的LLVM IR形式作为伪编译吗?这种事情需要结构/对象布局匹配,名称混乱匹配(对于具有非全局命名范围的语言),如果其中一种/两种语言都有异常,则各种异常处理细节应一致,继承/vtables的处理方式相同,

我使用的是一种晦涩难懂的编程语言,它在第三方库方面没有流行语言那么多的选择。不过,我使用的语言很灵活,修改语言也很容易。假设该语言是公共Lisp。让我们假设CL有一个编译器编译成LLVM,而语言+库(比如说C++和OpenCV)我想从CL中使用,也有LLVM编译器。因此,我可以使用OpenCV的LLVM IR形式作为伪编译吗?

这种事情需要结构/对象布局匹配,名称混乱匹配(对于具有非全局命名范围的语言),如果其中一种/两种语言都有异常,则各种异常处理细节应一致,继承/vtables的处理方式相同,调用约定必须兼容。可能还有更多,这只是我头脑中的一个快速回答


如果你要问这个问题,我恐怕简短的回答是“不”。相关的:你到底在问什么?是否可以通过LVVM将C++转换为通用LISP?不可以。仅仅因为您可以将一种语言编译为LLVM,并不意味着您可以轻松地将任意LLVM代码“反编译”为该语言。如果你想用另一种语言调用C++库,你要么希望通过语言的本地FFI调用LIB,要么想给你的语言添加一个特定的C++ FFI(后者是非常不常见的方法)。无论哪种方式,你通常都会使用本机代码,而不是LLVM IR。我不明白你所说的“如果你必须问这个问题,我担心简短的回答是“不”是什么意思。我的意思是,如果你必须问,你可能对这些问题不熟悉,那么困难可能太多。解决其中一些问题是工作,解决其他一些问题是艰苦的工作,但你必须解决所有问题才能让它发挥作用,而解决所有问题对于不熟悉主题领域的人来说是非常非常艰苦的工作。