无需模型检查即可实现符号执行

implement symbolic execution without model-checking

如何在不使用 model checkingFinite State Machine (FSM)(例如 notJava Path Finder 的情况下为 particular language 实现 symbolic execution?我需要有关它的详细信息。例如我可以用什么语言来实现这个符号执行以及我需要知道的其他事情?

你需要:

  • 要符号化执行的语言的解析器,可以构建 AST
  • 名称解析(和关联的符号表),因此当您的执行引擎遇到标识符时,它可以确定关联的类型和值
  • 控制流分析,使符号执行引擎可以跟随程序的控制流
  • 一种符号代数,可以组合和简化符号项。 这需要一个解析器(这样你就可以输入这样的方程式)和漂亮的打印机(这样你就可以看到它的计算结果)
  • 一种在符号执行开始时指定假定值的方法

这是相当多的机器,很难在一个地方找到所有的东西。很难只为一个工具构建它,这也是您找不到很多这样的工具的部分原因。

我们的 DMS Software Reengineering Toolkit 具备所有必要条件。您可能会发现 一个例子 使用 DMS 实现的符号语言的研究很有趣。