Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 02 Intermediate Representation

程序编译过程

Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 02 Intermediate Representation

IR

AST与IR的区别

Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 02 Intermediate Representation

3-Address Code(3AC)

特点:一条指令中最多出现3个地址,右值只能有一个、
这里Address可以是:

  1. Variable name: x, y
  2. Constant: 3
  3. Compiler-generated temporary: t1, t2
    如果有类似于x = 1 + 2 + 3的语句,就需要改为t1 = 1 + 2; x = t1 + 3;

Java Static Analysis Framework-Soot

IR: Jimple
https://github.com/soot-oss/soot
Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 02 Intermediate Representation
Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 02 Intermediate Representation

SSA

相当于是3AC Code+每个赋值都为新的变量
e.g:
Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 02 Intermediate Representation
对于这种情况下,translator就不明白x到底应该对应哪个分支的x,此时就引入phi-function。
Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 02 Intermediate Representation

上一篇:四维偏序


下一篇:Java拦截器