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/