南京大学<软件分析>课程IR

1.三地址码

没有正式定义

// 最多1个操作符
a+b+3  ->  t1 = a+b
                 t2 = t1+3
Address:
    Name:a、b
    Constant: 3
    编译器的临时变量:t1、t2

 2.Soot-常用的Java静态分析框架

// java IR(Jimple)基本知识
invokespecial:call constructor, call superclass methods, call private methods
invokevirtual: instance methods call (virtual dispatch)
invokeinterface: cannot optimization, checking interface implementation
invokestatic:call static methods

Java 7: invokedynamic -> Java static typing, dynamic language runs on JVM

method signature: class name, return type, method name(parameter1 type, parameter2 type)

 

3.SSA-静态单赋值(optional material)

给每一个定义变量一个新的名字,传递到接下来的使用当中,每个变量有1个定义(赋值的目标变量)。

4.控制流图分析

前置知识

基本块

定义:只有1个开头入口和1个结尾出口的最长3-地址指令序列。

入口从第一条指令入,出口从最后一条指令出。唯一性

识别基本块的算法:首先确定入口指令,第一条指令是入口;任何跳转指令的目标地址是入口;任何跟在跳转指令之后的指令是入口。然后构造基本块,任何基本块包含1个入口指令和其接下来的指令。

 

条件jump 分真假,会有两个出口,无条件jump,只会有一个出口

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如何将这串代码转为json <tbody> <!-- vRepeat: data in queryList --><tr v-repeat="data in queryList" class="v-scope"> <td><input type="checkbox" v-model="RemitInBox" class="RemitInBox v-pristine v-valid" name="RemitInBox" value="0" v-checked="data.CheckFlag" v-disabled="data.FndDrc!='01' || data.BusiState!='10'" id="List0_RemitIn" v-click="clickBox($index,data)"></td> <td><span v-show="data.FndDrc!='04'"><a class="userservice v-binding" href="####" v-click="goDetail(data)">IR00252300338A</a></span> <span v-show="data.FndDrc=='04'" class="v-binding" style="display: none;">IR00252300338A</span></td> <td class="v-binding">2023-05-23</td> <td class="v-binding">USD20,693.00</td> <td class="v-binding">BYGGING INTERCONTINENTAL 12 SHEHAB ...</td> <td class="v-binding">31980005000107125</td> <td><span v-show="data.FndDrc=='01'">入账</span> <span v-show="data.FndDrc=='04'" style="display: none;">退汇</span> <span v-show="!(data.FndDrc=='04'||data.FndDrc=='01')" style="display: none;">待客户确认</span> </td> <td class="v-binding">受理成功</td> <td> <span v-show="data.FndDrc=='01' && data.BusiState=='10'"> <a href="#" v-click="remitInPrint(data.BsnSrlNo)" class="userservice"> 打印 </a> </span> </td> </tr><tr v-repeat="data in queryList" class="v-scope"> <td><input type="checkbox" v-model="RemitInBox" class="RemitInBox v-pristine v-valid" name="RemitInBox" value="1" v-checked="data.CheckFlag" v-disabled="data.FndDrc!='01' || data.BusiState!='10'" id="List1_RemitIn" v-click="clickBox($index,data)"></td> <td><span v-show="data.FndDrc!='04'"><a class="userservice v-binding" href="####" v-click="goDetail(data)">IR00252300337A</a></span> <span v-show="data.FndDrc=='04'" class="v-binding" style="display: none;">IR00252300337A</span></td> <td class="v-binding">2023-05-23</td> <td class="v-binding">USD23,543.50</td> <td class="v-binding">DIARITA POLYMERS OFFSHORE LTD UNITE...</td> <td class="v-binding">31980005000107125</td> <td><span v-show="data.FndDrc=='01'">入账</span> <span v-show="data.FndDrc=='04'" style="display: none;">退汇</span> <span v-show="!(data.FndDrc=='04'||data.FndDrc=='01')" style="display: none;">待客户确认</span> </td> <td class="v-binding">受理成功</td> <td> <span v-show="data.FndDrc=='01' && data.BusiState=='10'"> <a href="#" v-click="remitInPrint(data.BsnSrlNo)" class="userservice"> 打印 </a> </span> </td> </tr> </tbody>
05-26
这段代码并不是一个有效的 JSON 格式,需要进行一些修改才能转为 JSON。可以将这段代码包装在一个 HTML 文件中,并使用 JavaScript 将其转为 JSON 对象。 以下为示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Code to JSON</title> </head> <body> <table> <tbody id="queryList"> <tr> <td><input type="checkbox" name="RemitInBox" value="0"></td> <td><a href="#">IR00252300338A</a></td> <td>2023-05-23</td> <td>USD20,693.00</td> <td>BYGGING INTERCONTINENTAL 12 SHEHAB ...</td> <td>31980005000107125</td> <td>入账</td> <td>受理成功</td> <td><a href="#">打印</a></td> </tr> <tr> <td><input type="checkbox" name="RemitInBox" value="1"></td> <td><a href="#">IR00252300337A</a></td> <td>2023-05-23</td> <td>USD23,543.50</td> <td>DIARITA POLYMERS OFFSHORE LTD UNITE...</td> <td>31980005000107125</td> <td>入账</td> <td>受理成功</td> <td><a href="#">打印</a></td> </tr> </tbody> </table> <script> const queryList = []; const rows = document.querySelectorAll('#queryList tr'); rows.forEach(row => { const cells = row.querySelectorAll('td'); const data = { RemitInBox: cells[0].querySelector('input').checked, IRNumber: cells[1].querySelector('a').innerText, Date: cells[2].innerText, Amount: cells[3].innerText, Description: cells[4].innerText, AccountNumber: cells[5].innerText, Status: cells[6].innerText, Result: cells[7].innerText, PrintLink: cells[8].querySelector('a').href }; queryList.push(data); }); console.log(JSON.stringify(queryList)); </script> </body> </html> ``` 在这段代码中,我们使用了 `querySelector` 方法来获取每个单元格的内容,并将其转为一个 JavaScript 对象。最后,我们使用 `JSON.stringify` 方法将整个数据转为 JSON 格式,并将其输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值