【程序分析】3-4 数据流分析-三种应用

目录

Reach Definition 可达分析

may analysis

算法

为什么会停?

活变量分析

may analysis: 不放过任何 path,v 在这条 path 上这条 path 就都要考虑

算法-后向传播

可用表达式分析

must analysis-不会误报,可能漏报

算法:前向传播

总结


程序分析网课笔记,同步CSDN记录一下

南京大学《软件分析》课程03(Data Flow Analysis I)_哔哩哔哩_bilibili

南京大学《软件分析》课程04(Data Flow Analysis II)_哔哩哔哩_bilibili

top

表示计算结果不确定,取值范围是全集

bottom

表示未定义,取值范围为空

may analysis:(over approximation)——meet 操作一般是 union

可能误报,但不会漏报,不放过任何一条运行时可能经过的路径

must analysis:(under approximation)——meet 操作一般是 join

不会误报,报出来的都是正确的,但可能漏报

Reach Definition 可达分析

may analysis

算法

为什么会停?

活变量分析

may analysis: 不放过任何 path,v 在这条 path 上这条 path 就都要考虑

注意求活变量的点 p 在起始点,所以 backward 会更方便,从后往前的过程中分析到的信息直接往前传就好了,但是如果时从前往后,每次都要将分析到的信息传到 p 很麻烦

可以将 backward 算法得到的结果正向去验证了看:

  • 某个程序点的活变量:该程序点到 exit 的所有路径中(——注意是到 exit完整的路径!),如果变量在重定义前使用了 或者 没有被重定义 那该程序点这个变量就是活的

算法-后向传播

可用表达式分析

must analysis-不会误报,可能漏报

漏报的例子:上图假设重定义 x 后值不变,根据可用表达式算法分析,交集汇聚后会认为 e^16*x 的表达式不可用,但实际上是可用的,这就是漏报

可以用于检测全局共同子表达式

因为要保证所有路径都 evaluation 整个表达式,所以是

算法:前向传播

总结

三种分析过程及算法要清楚

是 may 还是 must

反正整个表都要背下来

domain含义:你的 data 是一堆什么?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/623724.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于万兆以太网IP核仿真相关问题

文章目录 一、sim_speedup_control信号二、 一、sim_speedup_control信号 一般来说我们自己进行仿真时候该信号都直接给1,之前的高速IP核好像并没有出过错误,但是10G PCSPMS IP核进行仿真的时候,该信号必须要先置为0,等待用户复位…

react17 + antd4 如何实现Card组件与左侧内容对齐并撑满高度

在使用antd进行页面布局时,经常会遇到需要将内容区域进行左右分栏,并在右侧区域内放置一个或多个Card组件的情况。然而,有时我们会发现右侧的Card组件并不能与左侧的栏目对齐,尤其是当左侧栏目高度动态变化时。本文将介绍如何使用…

BTI性能开销权衡及优化措施

BTI分支目标识别精讲与实践系列 思考 1、什么是代码重用攻击?什么是ROP攻击?区别与联系? 2、什么是JOP攻击?间接分支跳转指令? 3、JOP攻击的缓解技术?控制流完整性保护? 4、BTI下的JOP如何…

【C++航海王:追寻罗杰的编程之路】异常——错误处理方式之一

目录 引言 1 -> C语言传统的处理错误的方式 2 -> C异常概念 3 -> 异常的使用 3.1 -> 异常的抛出和捕获 3.2 -> 异常的重新抛出 3.3 -> 异常规范 4 -> 自定义异常体系 5 -> C标准库的异常体系 6 -> 异常的优缺点 引言 在C编程中&#xff…

3dmax在线渲染怎么取消?怎么关闭云渲染

在线渲染,无论是通过云渲染服务还是渲染农场,已经成为众多3dmax动画制作者的首选方式来执行渲染任务。然而,如果在渲染过程中需要禁用这一在线渲染功能,该怎么操作呢?接下来,让我们一起探讨如何关闭这一功能…

34. UE5 RPG实现鼠标点击移动

在前面,我们实现过使用键盘按键wasd去实现控制角色的移动,现在,我们实现了InputAction按键触发,后面,实现一下通过鼠标点击地面实现角色移动。 我们将实现两种效果的切换,如果你点击地面快速松开&#xff0…

【AIGC】训练数据入库(Milvus)

之前的文章有写如何获取数据、如何补充数据,也有说如何对数据进行清洗、如何使用结构化数据进行训练。但好像没有说如何将训练数据“入库”。这里说的入库不是指 MySQL 数据库,而是指向量检索库 Milvus。 众所周知,人工智能多用向量数据进行…

JavaScript零基础入门2024详解

JavaScript 是一门跨平台 面向对象的脚本语言 是用来控制网页行为的 使网页可以交互 引入方式 内部脚本 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"width…

IP组播简介

定义 作为IP传输三种方式之一&#xff0c;IP组播通信指的是IP报文从一个源发出&#xff0c;被转发到一组特定的接收者。相较于传统的单播和广播&#xff0c;IP组播可以有效地节约网络带宽、降低网络负载&#xff0c;避免广播堵塞带来的诸如摄像头花屏&#xff0c;视频马赛克等…

DataGrip数据库管理工具安装使用

DataGrip数据库管理工具安装使用 DataGrip介绍 DataGrip是jetbrains旗下的一款数据库管理工具&#xff0c;相信做过java开发的同学都知道&#xff0c;idea就是这家公司发明的。 DataGrip 是JetBrains公司开发的数据库管理客户端工具&#xff08;操作数据库的IDE&#xff0c;…

【深度剖析】Visual Components:引领3D工厂仿真与物流规划新纪元

在智能制造的发展进程中&#xff0c;3D仿真技术已经成为推动产业升级、优化生产流程的关键工具。其中&#xff0c;Visual Components软件以其出色的表现和广泛应用&#xff0c;成为了诸多制造型企业首选的三维工厂仿真与物流规划解决方案。 Visual Components软件核心优势&…

解读科技智慧公厕改变生活的革命性创新之路

公共厕所&#xff0c;作为城市基础设施的一部分&#xff0c;一直以来都备受人们诟病。脏乱差、设施老旧、管理混乱&#xff0c;成为公共厕所长期存在的问题。然而&#xff0c;随着科技的不断进步&#xff0c;智慧公厕应运而生&#xff0c;为解决公厕难题&#xff0c;智慧公厕源…