遇到这个问题:解释统治者在逆向工程Java代码中的作用。
我能想到的是,您需要能够在控制图中计算Dominators以查看它是否可以减少:
如果图表是acylic - 它是可以减少的。因此,所有循环都是自然循环。 如果它不可简化,则代码是非结构化或优化的。
这听起来对你不对吗?
答案 0 :(得分:2)
主导者在程序分析中有各种各样的原因,无论你是否将逆向工程作为一种特殊情况。
关键概念是如果X支配Y,当Y执行时,X已经被执行。因此,如果你想了解Y在做什么,而Y取决于执行它的上下文,你可能需要理解X.
您还需要了解其他一些事项,例如数据流到Y,程序输入等。这是一个有用的起点。
有许多分析算法使用支配者,每个分析算法都回答特定类型的问题。很难说这些都是“主导者”扮演的“关键”角色。