当前位置: 首页 > 知识库问答 >
问题:

ASM字节码操作-istore和istore_

柴宏浚
2023-03-14

正如文件所说:

公共接口操作码

定义JVM操作码、访问标志和数组类型代码。此接口没有定义所有JVM操作码,因为某些操作码会自动处理。例如,xLOAD和xSTORE操作码会在可能的情况下自动替换为xLOAD_n和xSTORE_n操作码。因此,xLOAD_n和xSTORE_n操作码不会在此接口中定义。LDC也是如此,必要时自动替换为LDC_W或LDC2_W、WIDE、GOTO_W和JSR_W。

问题:

如果我有两个几乎一样的。类文件-一个使用istore_


共有1个答案

谭池暝
2023-03-14

ASM的ClassWriter将尽可能使用最高效的ISTORE操作码。如果输出ISTORE 1,ASM将输出ISTORE_1。

因此,类读取器将把操作码“解构”成泛型形式,隐藏其原始形式。通常可以安全地假设一个ISTORE 1最初是一个ISTORE_1,但在其他情况下,ASM会丢失原始字节码的实际形式。如果您想按原样检查原始字节码,可能需要使用javassist。

 类似资料:
  • 问题内容: 我正在寻找一个带有直观API的维护良好的Java字节码操作库。那里似乎有很多人。有什么建议可以尝试吗? 问题答案: 对您问题的最佳答案将取决于您的特定需求和目标;如果您可以扩展自己要完成的工作,那么我也许可以提供更针对性的答复。 取而代之的是,以我的经验,ASM可能提供了成熟度,灵活性和易用性的最佳组合: 它的开发相对活跃:即使最新版本是2009年6月,开发人员仍会定期对其VCS进行提

  • 本文向大家介绍Javassist如何操作Java 字节码,包括了Javassist如何操作Java 字节码的使用技巧和注意事项,需要的朋友参考一下 一、开篇 说起 AOP 小伙伴们肯定很熟悉,无论是 JDK 动态代理或者是 CGLIB 等,其底层都是通过操作 Java 字节码来实现代理。常用的一些操作字节码的技术有 ASM、AspectJ、Javassist 等。 ASM 其设计和实现是尽可能小而

  • 我想读取一个二进制文件,并对每个字节做一些操作。我想测试我是否正确地操作了字节。我想将一个字节variable1设置为“00000000”,然后将另一个字节variable2设置为“00001111”,或者它们是newvariable=variable1variable2,将newvariable<<4位,然后打印出int值。

  • 我必须将注释XmlElementWrapper和XmlElement添加到列表类型的字段,但是这些注释需要名称。我想把属性名设置为字段名。我愿意: 这是我的拦截器: 这是目标类的一部分: 但我有一个例外: [public static void factory.framework.SetterListInterceptor.getter(java.lang.reflect.Method)、publ

  • 本文向大家介绍java字节码框架ASM的深入学习,包括了java字节码框架ASM的深入学习的使用技巧和注意事项,需要的朋友参考一下 一、什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class文件里,这些

  • 问题内容: 我正在尝试(没有成功) 仅 打印给定方法的内容。以下代码 几乎 可以解决问题: 用它运行 导致 我想要得到的只是 没有签名,评论等任何内容。我该怎么做? 问题答案: 答案已经很老了,涉及编写很多代码。 从asm v5开始,打印方法说明很简单: 在实现ClassVisitor时,只需覆盖visitMethod方法。这里是一个例子: TraceMethodVisitor将由classVis