0

SSA IR 命令と JavaScript ファイルの元の命令との間のマッピングを構築しようとしています。JavaScript ファイルの IR は既に入手しています。しかし、IR出力は私にとってかなり混乱しています。SSA IR の生成に Watson Libraries for Analysis (WALA) を使用しています。出力 IR は次のとおりです。

<Code body of function LhtmlPage.html1626059688264016411.js/__WINDOW_MAIN__/f>
CFG:
BB0[-1..-2]
    -> BB1
BB1[0..12]
    -> BB3
    -> BB2
BB2[13..13]
    -> BB4
BB3[14..14]
    -> BB4
BB4[-1..-2]
Instructions:


0   v3 = new <JavaScriptLoader,LArray>@0     [include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [304->423] (line 20) [3=[arguments]]
1   v6 = global:global $$undefined           [include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [323->334] (line 21) [6=[x, y]]
2   putfield v2.< JavaScriptLoader, LRoot, x, <JavaScriptLoader,LRoot> > = v6[include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [323->334] (line 21) [2=[this]6=[x, y]]
4   v10 = global:global $$undefined          [include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [339->345] (line 22) [10=[y]]
5   putfield v2.< JavaScriptLoader, LRoot, y, <JavaScriptLoader,LRoot> > = v10[include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [339->345] (line 22) [2=[this]10=[y]]
7   putfield v2.< JavaScriptLoader, LRoot, x, <JavaScriptLoader,LRoot> > = v13:#10.0[include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [323->334] (line 21) [2=[this]13=[x, y]]
9   putfield v2.< JavaScriptLoader, LRoot, y, <JavaScriptLoader,LRoot> > = v13:#10.0[include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [350->355] (line 23) [2=[this]13=[x, y]]
11   v15 = binaryop(eq) v13:#10.0 , v16:#100.0[include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [364->372] (line 24) [13=[x, y]]
12   conditional branch(eq, to iindex=14) v15,v17:#0[include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [361->402] (line 24)

13   return v18:#true                        [include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [384->396] (line 25)

14   return v19:#false                       [include:htmlPage.html [73->110] (line 6)]bundle-bg1.js [407->420] (line 27)

私のテストコードは次のとおりです。

function f() { 
   var x = 10; 
   var y; 
   y = x; 
   if(y == 100) { 
       return true; 
   } 
   return false; 
} 
var b = f();

このコードを IR にマップし、オペランドと演算子を特定するにはどうすればよいですか? どんな助けでも大歓迎です。

4

0 に答える 0