首页 > 解决方案 > 是否可以使用 LLVM IR 作为通用语言在编程语言之间进行转换?

问题描述

我正在使用一种晦涩的编程语言,它没有像流行语言那样在第三方库方面拥有尽可能多的选项的特权。我使用的语言很灵活,而且很容易修改语言。假设语言是 Common Lisp。让我们还假设 CL 有一个编译器可以编译为 LLVM,并且我想从 CL 使用的语言+库(比如说 C++ 和 OpenCV)也有一个 LLVM 编译器。那么我可以使用 OpenCV 的 LLVM IR 形式作为伪转译吗?

标签: compiler-constructionllvmprogramming-languagestranspiler

解决方案


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

如果你不得不问这个问题,我担心简短的回答是“不”。


推荐阅读