ObjectWeb ASM与dcmpl/ifgt字节码指令的异常行为问询
关于ObjectWeb ASM操作Java字节码的异常行为分析与疑问
问题现象
- 手动修改合法Java字节码:将
ifle指令替换为ifgt,同时取反对应的iconst值后,出现以下矛盾表现:javap输出的字节码逻辑看似混乱,但JVM实际执行结果完全符合预期;- FernFlower反编译器无法正确解析该字节码;
- 尝试用ASM直接生成此类字节码时,会在帧生成阶段抛出数组越界异常。
核心字节码示例
原正常逻辑字节码片段:
iconst_1 ifle LABEL_0
修改后的字节码片段:
iconst_m1 ifgt LABEL_0
待明确的疑问点
目前无法定位问题根源,需确认:
- 是否为ObjectWeb ASM在帧验证/生成逻辑中的Bug?
- 是否属于JVM对这类字节码的未定义行为?
- 抑或是
javap在字节码解析显示时出现错误?
内容的提问来源于stack exchange,提问作者SocketByte
相关产品推荐
相关产品推荐

