ASMSupport是基于ASM实现的一套框架。 ASMSupport通过将ASM字节码操作抽象成对象记作Operator,然后将字节码操作所需要的信息封装到Operator中,并将Operator添加到执行队列Queue中,当方法所需要的所有操作都创建完毕则使用ASM框架将队列中的所有Operator执行。下面列举一个HelloWorld?例子:
public static void main(String[] args){
System.out.println("Hello World!");
}
ASMSupport代码:
public static final GlobalVariable out = AClassFactory.getProductClass(System.class).getGlobalVariable("out");
invoke(out, "println", getValue("Hello World")
runReturn()
ASMSupport代码分析: 上面代码实际上创建了两个操作对象放入执行队列中。 一个是StaticMethodInvoker?。还有一个是Return对象 StaticMethodInvoker?存储了调用的对象即System.out,参数值即”Hello World”。当该对象被调用的时候则会调用ASM框架的方法,执行JVM的指令。 GETSTATIC System.out LDC “HelloWorld?” INVOKEIRTUAL PrintStream?.println(String): void
[img]http://amssupport.googlecode.com/files/process.jpg[/img]
项目地址:http://code.google.com/p/amssupport/