LLVM 中的抽象解释

Posted

技术标签:

【中文标题】LLVM 中的抽象解释【英文标题】:Abstract Interpretation in LLVM 【发布时间】:2016-03-18 08:14:32 【问题描述】:

我需要使用抽象解释来使用 LLVM 进行一些分析。 这可能吗?或者我需要更轻松地使用分析工具。 如果我可以通过 LLVM 做到这一点,哪些类将帮助我从原始源代码中制定语句以获取变量之间的关系(以及每个变量的可能值范围)

【问题讨论】:

【参考方案1】:

您可以查看KLEE,它是 LLVM 位码的符号解释器:https://github.com/klee

【讨论】:

【参考方案2】:

如果您使用区间域进行分析,则可以使用Constant Range 类来表示区间。它将允许您抽象出范围上的算术运算。通过调试元数据和一些额外的簿记,您可以获得变量之间的关系。见this答案。

【讨论】:

【参考方案3】:

您可以查看 Pagai 静态分析器,该分析器使用最先进的抽象解释技术计算 LLVM 位码上的不变量,并且可以使用获得的不变量检测 .bc 文件,以供您的工具使用。 http://pagai.forge.imag.fr

【讨论】:

以上是关于LLVM 中的抽象解释的主要内容,如果未能解决你的问题,请参考以下文章

解释器模式 Interpreter

用生活中的例子解释java中的接口

(设计模式)解释器

PHP设计模式 - 解释器模式

解释器模式

设计模式(27)-----解释器模式