低级别代码的证明导向反编译与概率程序的逆向抽象解释
在计算机科学领域,低级别代码的反编译以及概率程序的静态分析是两个重要的研究方向。前者有助于理解和重构已编译的代码,后者则在处理具有不确定性和概率行为的程序时发挥关键作用。
低级别代码的证明导向反编译
在低级别代码反编译的研究中,我们面临着对象初始化带来的复杂性。Freund 和 Mitchell 指出,简单的 Java 字节码语言类型系统可能因访问未初始化对象而不健全。他们通过对未初始化对象类型进行索引,区分了初始化和未初始化对象的类型,这种机制具有一定的通用性,可应用于我们的框架。
JAL:带对象和类的 JAL0 扩展
我们引入了 JAL,它是 JAL0 的扩展,具备面向对象的特性。以下是相关的定义和规则:
- 类型语法 :
- $\kappa ::= c | cu$
- $\tau ::= int | \kappa$
- 其中,$cu$ 表示在点 $u$ 创建的未初始化对象的引用。
- 类结构 :定义为 $({f_1 : \tau_1, \cdots, f_n : \tau_n}, {m_1 : \Gamma_1; \varnothing \vdash \tau_1, \cdots m_n : \Gamma_n; \varnothing \vdash \tau_n})$ 的形式,用于指定类中字段和方法的类型。
- 类上下文 :用 $C$ 表示,是从类标识符到类结构的映射。
- 新增指令