《Java ASM 系列二:OPCODE》的研究主题是围绕着三个事物来展开:
- instruction
MethodVisitor.visitXxxInsn()
方法- Stack Frame
那么,这三个事物之间是有什么样的关系呢?
详细的来说,instruction、MethodVisitor.visitXxxInsn()
方法和 Stack Frame 三个事物之间有内在的关联关系:
- 从一个具体
.class
文件的视角来说,它定义的每一个方法当中都包含实现代码逻辑的 instruction 内容。 - 从 ASM 的视角来说,ASM 可以通过 Class Generation 或 Class Transformation 操作来生成一个具体的
.class
文件; 那么,对于方法当中的 instruction 内容,应该使用哪些MethodVisitor.visitXxxInsn()
方法来生成呢? - 从 JVM 的视角来说,一个具体的
.class
文件需要加载到 JVM 当中来运行; 在方法的运行过程当中,每一条 instruction 的执行,会对 Stack Frame 有哪些影响呢?
在The Java Virtual Machine Specification中,它对于具体 .class
文件提供了ClassFile结构的支持,对于 JVM Execution Engine 提供了Instruction Set的支持。在以后的学习当中,我们需要经常参照Instruction Set部分的内容。