DCS292 编译器构造实验,实验四,逆向工程工具

help-assignment

4 逆向工程工具
本实验项目要求开发的软件工具 ROSE可根据一个 Oberon-0 语言源程序自动绘制 出一个模块中所有过程的调用图(实验三),并为每一过程自动绘制出表达控制 流设计的流程图(实验四)。
4.1 调用图
在一个编译器执行过程间分析(Interprocedural Analysis)以实现全局优化时,调 用图(Call Graph)是开展分析的一个重要基础。
4.1.1 调用图定义
在 A. Aho 等 人 合 著 的 Compilers: Principles, Techniques, and Tools, 2nd Ed (Addison-Wesley, 2006, ISBN 0-321-48681-1)第 12 章 12.1 小节中,调用图被定 义为一个由结点和有向边组成的集合,其中:
 程序中的每一过程用一个结点表示;在 ROSE 中采用黄色填充的矩形表示这类结点,矩形中标注该过程的名字。
 程序中每一个调用过程的地方称为调用点(Call Site),这些调用点也用一个结点表示;在 ROSE 中用青色填充的矩形表示这类结点,其中标注调用点的 Id、所处的过程名字、以及发出过程调用的那条语句。
 在某一调用点调用某一过程这种调用关系在图中用一条有向边表示。
为一个面向对象程序构造调用图并不容易,因为动态绑定(Dynamic Binding; 亦称动态分派,Dynamic Dispatching)使得调用关系更加复杂;像 C 程序中允许 将函数指针作为参数传递,也给生成调用图造成麻烦。幸运的是我们在 ROSE 中 不必考虑这一问题。
4.1.2 调用图例子
给定如下所示的 Oberon-0 源程序
根据上述 Oberon-0 源程序,由 ROSE 工具自动生成的一个调用图如图1所示
4.2 流程图
在结构化程序设计中,有许多表示技术可用于表达控制流设计,譬如控制流图 (Control Flow Graph,简称 CFG)、N_S 图(又称盒图)、日立公司的 PAD 图、 JSP 方法中的 Jackson 图等。ROSE 选择了流程图作为控制流的可视化工具。
4.2.1 流程图定义 流程图(Flowchart)又称程序流程图、程序框图,是一个子程序控制流设计的图 形表示,其中展示了程序执行过程中可能遍历的所有路径。
流程图中具有以下基本图形:
关于流程图的更详细资料可参阅:http://en.wikipedia.org/wiki/Flowchart
4.2.2 流程图例子
对于一个 Account 模块中的存款和取款过程,由 ROSE 生成的两个流程图例子如 图 4.2 所示。
对于本文档第三章 3.5 小节所示 Sample 模块中的 Multiply 过程,由ROSE自动生成的一个流程图例子如图 4.3 所示

contact me on V help-assignment

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值