【问题标题】:compiler framework for C code [closed]C代码的编译器框架[关闭]
【发布时间】:2014-10-15 08:40:22
【问题描述】:

我正在寻找一个编译器框架,我可以用它来为 C 源代码编写一些代码优化和数据流分析。我知道有 LLVM,但我想使用源代码而不是字节码。我正在研究 LLVM-dragonegg,但我不确定使用它实现数据流传递有多容易?

【问题讨论】:

  • 致那些投票结束这个问题的人:我想知道为什么这是一个离题的问题。我只是想看看有哪些可用的选项,而不是为了推荐或认可。
  • 试试 Clang,它有一个不错且易于使用的 API,即使使用了不错的 Python 包装器 (cindex)。
  • P.S.另一种选择是在 LLVM IR 级别上工作,同时保留调试元数据,以维护从修改后的 IR 到原始源代码的映射。根据您想要做什么,这可能比分析 Clang AST 更好。

标签: compiler-construction compiler-optimization llvm-clang


【解决方案1】:

compiler 不适用于文本源代码(但它是 parses 源代码)。它适用于内部表示,例如ASTs。每个编译器都有自己的内部表示,并且编译器的大部分optimization 工作是转换它的内部表示。

如果您决定使用最近的 GCC,您可以使用 MELT 扩展它(或者更痛苦的是,使用您自己的 GCC 插件)。但当然,您需要详细了解内部表示(Gimple、Generic Trees)和编译过程。

MELT 是一种 lispy 领域特定语言,作为 GCC 插件实现,用于扩展 GCC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多