-
ASM-08-Method 方法增强实战
Method 回顾
上面几节谈论了大量的 method 方法,感觉 ASM 提供了很多强大的功能。
但是缺少实战有时候就比较没有实感,所以选择一个比较简单的例子进行编码。
一点想法
基本信息
可以基于 asm 获取 class 的基本信息
reflect
可以学习 ReflectASM 的思想,自己基于 ASM 实现 field/method 等较为高效的调用。
aop
直...
2018-07-20 05:43:31 |
Java
-
ASM-07-Method Tools 工具类
Tools
org.objectweb.asm.commons 软件包包含一些预定义的方法适配器,这些适配器可用于定义您自己的适配器。
本节介绍其中的三个,并说明如何将它们与3.2.4节的AddTimerAdapter示例一起使用。
它还显示了如何使用上一章中介绍的工具简化方法的生成或转换。
Basic tools
2.3 节中介绍的工具也可以用于方法。
Type
许多字节码指...
2018-07-20 05:43:31 |
Java
-
ASM-06-Method Interface and Components
介绍
用于生成和转换已编译方法的ASM API基于MethodVisitor抽象类(请参见图3.4),该类由ClassVisitor的visitMethod方法返回。
除了下一章中将介绍的与注释和调试信息有关的一些方法外,此类还基于以下内容为每个字节码指令类别定义了一个方法:
这些指令的参数数量和类型(这些类别与3.1.2节中介绍的类别不对应)。
必须按以下顺序调用这些方法(在Met...
2018-07-20 05:43:31 |
Java
-
ASM-05-Method Structure
方法
本章说明如何使用核心ASM API生成和转换编译方法。
它首先介绍了已编译的方法,然后提供了许多说明性示例,介绍了相应的ASM接口,组件以及生成和转换它们的工具。
结构体
在已编译的类中,方法的代码存储为一系列字节码指令。
为了生成和转换类,了解这些指令并理解它们的工作原理至关重要。
本节概述了这些指令,这些指令应足以开始对简单的类生成器和转换器进行编码。
要获得完整的定...
2018-07-20 05:43:31 |
Java
-
ASM-04-class tools
工具类
除了ClassVisitor类以及相关的ClassReader和ClassWriter组件之外,ASM在org.objectweb.asm.util包中还提供了一些工具,这些工具在类生成器或适配器的开发过程中很有用,但不需要 在运行时。
ASM还提供了一个实用程序类,用于在运行时处理内部名称,类型描述符和方法描述符。
所有这些工具在下面介绍。
类型(Type)
如您在前几节...
2018-07-20 05:43:31 |
Java
-
ASM-03-classes Interface
接口和组件
介绍
用于生成和转换已编译类的ASM API基于ClassVisitor抽象类(请参见图2.4)。
此类中的每个方法都对应于同名的类文件结构部分(请参见图2.1)。
通过单个方法调用可以访问简单部分,该方法的参数描述其内容,并返回void。
可以通过返回辅助访问者类的初始方法调用来访问其内容可以具有任意长度和复杂度的节。
visitAnnotation,visitFi...
2018-07-20 05:43:31 |
Java
-
ASM-02-classes Structure
Java 类文件
所谓 Java 类文件,就是通常用 javac 编译器产生的 .class 文件。
这些文件具有严格定义的格式。
为了更好的理解 ASM,首先对 Java 类文件格式作一点简单的介绍。
Java 源文件经过 javac 编译器编译之后,将会生成对应的二进制文件(如下图所示)。
每个合法的 Java 类文件都具备精确的定义,而正是这种精确的定义,才使得 Java...
2018-07-20 05:43:31 |
Java
-
ASM-01-overview
动机
程序分析,生成和转换是有用的技术,可以在许多情况下使用:
程序分析
范围从简单的语法分析到完整的语义分析,可用于查找应用程序中的潜在错误,检测未使用的代码,反向工程代码等。
在编译器中使用程序生成。
其中包括传统的编译器,还有用于分布式编程的存根或骨架编译器,即时编译器等
程序转换可用于优化或混淆程序,
将调试或性能监控代码插入应用程序,用于面向方面的编程等
所有这些技...
2018-07-20 05:43:31 |
Java