9

有没有办法用 C# 编写 LLVM 前端编译器?

4

3 回答 3

9

我不明白为什么不。LLVM有一个语言参考,只要您符合该语言,就没有理由不能用 C# 编写可以解析该语言的东西,并且:

  • 根据语言生成输出(如实时解释器)
  • 在 C# 中创建一个程序集,它将执行 LLVM 指令

这并不是说这很容易,但可以做到。

于 2010-08-24T18:16:09.317 回答
3

有两种方法。您可以 P/Invoke LLVM 的 C 绑定(对于实现编译器后端来说绰绰有余),或者您可以使用 C++/CLI 编写自己的包装器。

我使用 Clang 为 LLVM 的 C 绑定标头生成的 XML AST 转储自动为它们生成 .NET 绑定。但现在不可能再这样做了,因为 XML AST 打印机已从 Clang 中删除,没有可用的替代品。

于 2010-08-25T12:53:04.307 回答
1

如果您正在寻找用于 C# 的 LLVM 编译器,Mono 2.6 可以使用 LLVM

于 2010-08-24T17:53:51.670 回答