我正在使用此处找到的 ObjectWeb ASM 库来解析 jar 文件并读取方法的字节码。我已经编写了代码来从字节码指令列表生成控制流图。
但是,在对控制流图执行一些操作后,我希望能够将控制流图“导出”回(简单)指令列表。理论上,我应该能够遍历所有基本块并打印出存储在每个块中的指令。但是,这样做很可能会导致指令的顺序非常奇怪,因为基本块列表没有排序。
我读过形成“支配树”可以帮助找出基本块的最佳(最合乎逻辑的)排序。我不确定如何计算支配树以及如何使用它对基本块进行排序。
有没有人可以分享关于这个主题的任何知识?
谢谢。