文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
4 过程间数据流分析:Interprocedural Data-Flow Analysis
4.1 定义与比较
过程间分析多了一个调用返回边及对应的传递函数。
- Call edge transfer:从调用者向被调用者传递参数
- Return edge transfer:被调用者向调用者传递返回值
- Node transfer:与前面文章提到的传递函数基本一样,但是多了一个性质,对于每次调用 (例如 b=foo(a)) 会将等式左侧的数值 kill 掉,然后在下一步中有返回边传递函数重新赋值。这个操作可以在返回值与原值不同时防止数据冲突。
4.2 示例
这一段存在的必要性?
如果没有这一段,那么变量 a 在分析被调用函数的全程中都需要记住 a 的值,这在程序运行时会浪费大量内存。
此外,要记得在调用语句处 kill 掉表达式左边的值,否则会造成结果的不准确:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论