【问题标题】:LLVM API interface in LLVM-based languages?基于 LLVM 的语言中的 LLVM API 接口?
【发布时间】:2014-05-18 12:52:59
【问题描述】:

有很多基于 LLVM 库的编程语言,大多数编译器/解释器也与 LLVM 静态链接。因此,这些语言向内部使用的 LLVM 库公开接口似乎很自然。但是我找不到任何东西。我想要的是能够加载 LLVM 位代码,对其进行修改并将其保存回文件,但我想用一些更高级别的(脚本)语言(而不是使用 C++)来完成它。例如,Julia 似乎根本没有公开 LLVM API,另一方面,Racket 编程语言的 LLVM 绑定已经过时。是否有任何基于 LLVM 的编程语言向程序员公开 LLVM API?

【问题讨论】:

  • 这个问题我不清楚...你的意思是你只是想要使用不同于 C 或 C++ 的语言的 LLVM 绑定,还是你的意思是你想要访问基于 LLVM 的实现的内部结构特定语言?

标签: llvm


【解决方案1】:

llvmpy:

llvmpy 是 llvm C++ 库的 Python 包装器,它允许简单地访问编译器工具。它可以用于很多事情,但这里有一些想法:

  • 动态创建 LLVM IR 以与 CLANG 或 dragonegg 生成的 LLVM IR 链接
  • 使用 LLVM 执行引擎动态构建机器代码
  • 与 PLY 或其他分词器和解析器一起使用,在 Python 中编写完整的编译器

还有ruby-llvm:

Ruby-LLVM 是一种绑定到 LLVM 编译器基础结构库的 Ruby 语言。 LLVM 允许用户创建即时 (JIT) 编译器、用于多种架构的提前 (AOT) 编译器、代码分析器等。 LLVM 绑定还可用于通过动态编译和加载计算密集型算法来加速 Ruby 代码。

【讨论】:

    猜你喜欢
    • 2011-12-16
    • 2011-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多