我正在使用ASM Framework进行Java字节码操作。 ASM中存在两次的某些操作码助记符,它们的前缀为“ H_”:
Opcodes.H_GETFIELD vs. Opcodes.GETFIELD
Opcodes.H_GETSTATIC vs. Opcodes.GETSTATIC
Opcodes.H_INVOKEINTERFACE vs. Opcodes.INVOKEINTERFACE
Opcodes.H_INVOKESPECIAL vs. Opcodes.INVOKESPECIAL
Opcodes.H_INVOKESTATIC vs. Opcodes.INVOKESTATIC
Opcodes.H_NEWINVOKESPECIAL vs. Opcodes.NEWINVOKESPECIAL
Opcodes.H_PUTFIELD vs. Opcodes.PUTFIELD
Opcodes.H_PUTSTATIC vs. Opcodes.PUTSTATIC
这两个操作码有什么区别?
最佳答案
H_
类中的Opcodes
常数不是实际的操作码,它们用于构建MethodHandle
指令(使用ASMs Handle
类),该指令可以在InvokeDynamic
指令中使用。