标签: compiler-construction compiler-optimization llvm-clang
我正在寻找一个编译器框架,我可以用它为C源代码编写一些代码优化和数据流分析。我知道有LLVM,但我想使用源代码而不是字节码。我正在研究LLVM-dragonegg,但我不确定使用它实现数据流传递有多容易?
答案 0 :(得分:1)
compiler不适用于文字源代码(但parses源代码)。它适用于内部表示,例如AST s。每个编译器都有自己的内部表示,编译器的大多数optimization工作都是转换其内部表示。
如果您决定使用最近的GCC,则可以使用MELT扩展它(或者更痛苦地使用您自己的GCC插件)。但是当然你需要详细了解内部表示( Gimple ,Generic Trees)和编译过程。
MELT是一种lispy域特定语言,实现为GCC插件,用于扩展GCC。