软件分析笔记02---Intermediate Representation

整体contents

compiler (source code ——> machine code)

non-trivial非平凡的

经过 语义分析->语法分析->类型检查等各种trivial的分析(前端),生成中间代码IR->进行non-trivial的分析(及静态分析)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vmEsiRzh-1677574742921)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228142107245.png)]

IR介绍

IR为三地址码(3-address)(一个运算符,运算对象1,运算对象2,结果)(因为每个陈述都包含了三个变量,所以它被称为三地址码。)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y44e3nXv-1677574742922)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228144449506.png)]

常用三地址码(简单的)举例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6EdzBnu0-1677574742922)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228145923576.png)]

AST vs IR

IR特点:

  • 更接近机器语言
  • 通常语言都可以转换成IR,对语言无依赖性
  • 简洁统一
  • 保留了控制流信息
  • 有利于进行静态分析

SSA(static single assignment)

给每个definition一个fresh name,如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bbwapkkd-1677574742922)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228154319402.png)]

针对最后一条(每个变量只有一个定义)引入的一种function(phi-function 类似于不只一个definition)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GYZCEoGB-1677574742923)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228154521599.png)]

SSA优势:流信息有所保存、定义-使用更明确清楚

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3OrHKIoh-1677574742923)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228155241711.png)]

控制流图:

静态分析的基础结构

3AC to CFG

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MdQw0OYJ-1677574742923)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228155558924.png)]

BB块的构建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tNTPtuD4-1677574742923)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228160947225.png)]

1.确认leader

  • 第一个instruction
  • target instruction
  • jump之后的第一个instruction

2.构造BB

例子:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1GmXKKFi-1677574742924)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228161416045.png)]

CFG构造:在BB的基础上添加边(哪些需要加,哪些不需要)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vdXna6TI-1677574742924)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228162053523.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aydbHMDj-1677574742924)(C:\Users\XuL\AppData\Roaming\Typora\typora-user-images\image-20230228162848943.png)]

PL ---- JVM(方法调用简单介绍)

片转存中...(img-aydbHMDj-1677574742924)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

What’smean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值