【发布时间】:2019-01-08 02:02:23
【问题描述】:
我正在使用一种晦涩难懂的编程语言,它没有像流行语言那样在第三方库方面拥有尽可能多的选项的特权。我使用的语言很灵活,而且很容易修改语言。假设语言是 Common Lisp。让我们还假设 CL 有一个编译器可以编译为 LLVM,并且我想从 CL 使用的语言+库(比如说 C++ 和 OpenCV)也有一个 LLVM 编译器。那么我可以使用 OpenCV 的 LLVM IR 形式作为伪转译吗?
【问题讨论】:
-
你到底在问什么?您是否可以通过 LLVM 将 C++ 转换为 Common Lisp?不会。仅仅因为您可以将一种语言编译为 LLVM,并不意味着您可以轻松地将任意 LLVM 代码“反编译”为该语言。如果您想从另一种语言调用 C++ 库,您需要一个 C 接口到您通过该语言的本机 FFI 调用的库,或者您想向您的语言添加特定的 C++ FFI(后者少得多常用方法)。无论哪种方式,您通常都会通过本机代码,而不是 LLVM IR。
标签: compiler-construction llvm programming-languages transpiler