ASM
youling_lh
这个作者很懒,什么都没留下…
展开
-
JVM字节码初探--字节码
理解JVM的指令的一个基础是理解JVM的栈内存,因此在开始之前最好先参阅一下《Java 栈内存介绍 》。本篇将结合例子对JVM的主要指令进行描述。 在开始之前,我们先了解一下如下的 “常识”:字长是根据JVM不同而定的,一般(并非一定)在32位机上是4个字节,64位机上是8个字节(使用8个字节很可能会潜在地存在内存浪费的情况),JVM规范上要求1个字必须至少能容纳int转载 2013-08-14 19:46:32 · 863 阅读 · 0 评论 -
使用ASM来书写Java代码-2
1. 类:a) 数组: i. 创建:mv.visitInsn(ICONST_3);mv.visitIntInsn(NEWARRAY, T_INT);mv.visitVarInsn(ASTORE, 1); // 将数组引用存到局部变量栈1号的位置 等价于:int[] a转载 2013-08-14 19:53:36 · 1185 阅读 · 0 评论 -
使用ASM来书写Java代码-3
1. Signature:a) 说明:J2SE 5.0为了支持范型,参数化参数,Annotation和枚举等新增特性,因此增加了一个Signature属性,作为类,字段,方法的Description之外的一个辅助机制。 2. Annotation:a) Annotation: i.转载 2013-08-14 19:58:36 · 833 阅读 · 0 评论 -
ASM函数监听实现-之简单静态方法注入
1.目的:实现对函数执行监听,在函数调用前,后得到通知。考虑用asm来实现。 2.资料:在网上看到关于asm的技术资料,写了一个简单的实现。参考链接如下: http://www.cnblogs.com/eafy/archive/2008/06/18/1224633.html http://alvinqq.iteye.com/blog/940965 http://www.ibm.co转载 2013-08-14 19:44:16 · 2641 阅读 · 0 评论 -
cglib和asm相关的文章
温故了一个cglib和asm,找到几篇写得比较好,介绍得比较清楚的文章: 1、CGlib简单介绍,访问地址:http://www.blogjava.net/stone2083/archive/2008/03/16/186615.html,从简单的示例到不同业务场景的变化,一步步让读者明白,为什么要使用cglib以及哪种场景下需要使用cglib; 2、cglib源码学习交转载 2013-08-14 20:10:03 · 777 阅读 · 0 评论 -
使用ASM来书写Java代码-1
1. 流程控制:a) 说明:JVM提供了基本的流程控制结构,这些结构都是基于Label而实现的。这些跳转指令,包括基于比较结果的有条件跳转和无条件的GOTO指令。另外,JVM也提供了实现switch结构的LOOKUPSWITCH和TABLESWITCH指令,其中LOOKUPSWITCH是基于键比较的,而TABLESWITCH则是基于键索引的,因此后者的匹配速度更快。转载 2013-08-14 19:49:16 · 608 阅读 · 0 评论 -
代码动态生成利器ASM
小巧而神奇的ASMASM是一套JAVA字节码生成架构。它可以动态生成二进制格式的stub类或其他代理类,或者在类被JAVA虚拟机装入内存之前,动态修改类。 ASM 提供了与 BCEL( http://jakarta.apache.org/bcel )和SERP( http://serp.sourceforge.net/ )相似的功能,只有22K的大小,比起350K的BCEL和150K的转载 2013-08-14 19:51:58 · 836 阅读 · 0 评论