我有一个过程间控制流图,我想对其执行数据流分析。我将 Hashtable 用于全局(级别 = 0)、文件(级别 = 1)和方法(级别 = 2)级别等,我从级别 0 开始将它们推送到堆栈上。
只要我在程序中只有一种方法,它就可以正常工作。但是如果我有两个方法并且假设方法1(M1)中的basicblock#2调用方法(M2),我应该如何处理这个新的方法符号表?我应该存储以前的符号表并为新方法创建一个新的符号表吗?
当调用另一个类的方法或进行嵌套函数调用时,我看到了更复杂的情况。有人可以建议我应该如何处理它吗?
我在 Java 中工作。
PS 而且我知道有一些现有的工具,如 WALA、Soot 可能适用于此,但我正在尝试了解它是如何工作的。