ASMSupport原理概要

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/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章