ASM is an open-source java library for manipulating bytecode.
- 《Java ASM系列一:Core API》主要是针对ASM当中Core API的内容进行展开。
- 《Java ASM系列二:OPCODE》主要是针对
MethodVisitor.visitXxxInsn()
方法与200个opcode之间的关系展开,同时也会涉及到opcode对于Stack Frame的影响。 - 《Java ASM系列三:Tree API》主要是针对ASM当中Tree API的内容进行展开。
对于《Java ASM系列三:Tree API》有配套的视频讲解,可以点击这里和这里进行查看;同时,也可以点击这里查看源码资料。
1. 主要内容
1.1. 第一章 基础
1.2. 第二章 Class Generation
- 01. ClassNode介绍
- 02. FieldNode介绍
- 03. MethodNode介绍
- 04. InsnList介绍
- 05. AbstractInsnNode介绍
- 06. if和switch示例
- 07. TryCatchBlockNode介绍
1.3. 第三章 Class Transformation
- 01. Tree Based Class Transformation
- 02. Tree Based Class Transformation示例
- 03. Tree Based Method Transformation
- 04. Tree Based Method Transformation示例
- 05. 混合使用Core API和Tree API进行类转换
1.4. 第四章 Method Analysis
- 01. Method Analysis
- 02. Frame/Interpreter/Value
- 03. Analyzer
- 04. BasicValue-BasicInterpreter
- 05. BasicValue-BasicInterpreter示例:移除Dead Code
- 06. BasicValue-BasicVerifier
- 07. BasicValue-SimpleVerifier
- 08. BasicValue-SimpleVerifier示例:移除checkcast
- 09. BasicValue-SimpleVerifier示例:冗余变量分析
- 10. SourceValue-SourceInterpreter
- 11. SourceValue-SourceInterpreter示例:反编译-方法参数
- 12. SourceValue-SourceInterpreter示例:查找相关的指令
- 13. Interpreter和Value的精妙之处
- 14. 示例:检测潜在的NullPointerException
- 15. 生成Control Flow Graph
- 16. 示例:Cyclomatic Complexity