对于上下文,我正在尝试编写从 AVM2(ActionScript 虚拟机 2)字节码/程序集到高级 ActionScript 3 代码的反编译器。据我所知,这需要我分析程序集并从中生成结果控制流图,以便推断诸如循环和条件分支(if/else)之类的结构。
给定一些组件,例如:
0 getlocal0
1 pushscope
2 findpropstrict {, private, }::trace
4 pushstring "one"
6 callproperty {, private, }::trace (1)
9 pop
10 pushbyte 5
12 pushbyte 3
14 ifngt L1
18 findpropstrict {, private, }::trace
20 pushstring "two"
22 callproperty {, private, }::trace (1)
25 pop
L1:
26 findpropstrict {, private, }::trace
28 pushstring "three"
30 callproperty {, private, }::trace (1)
33 coerce_a
34 setlocal1
35 getlocal1
36 returnvalue
37 kill 1
生成控制流图的算法是什么?