gpt4 book ai didi

java - 将 InsnList 拆分为基本 block

转载 作者:行者123 更新时间:2023-12-02 03:35:25 33 4
gpt4 key购买 nike

在 ASM Tree API 中,我有一个 InsnList,其中包含方法中的指令列表。

我想将其分成基本 block :一系列指令,使得除最后一条指令之外的每条指令都恰好有一个后继,并且除了第一个指令之外的任何指令都不能成为跳转的目标。

我该如何实现这个目标?

最佳答案

在 Java 7+ 中,堆栈帧将包含在方法操作码中。迭代方法的 InsnList 并按每个 FrameInsn 分割 block 。

示例:

List<InsnList> l = Lists.newList();
InsnList il = new InsnList();
for (AbstractInsnNode ain : method.instructions.toArray()) {
if (ain.getType == AbstractInsnNode.FRAME){
l.add(il);
il = new InsnList();
} else {
il.add(ain);
}
}

关于java - 将 InsnList 拆分为基本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37502689/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com