如果在方法中准确的访问局部变量的index

2017-07-24  本文已影响10人  孔祥子看天下

本篇不是正文,只是简单记录一下感想,比较短。

通常使用ASM 在方法中插入方法调用的时候,会拦截visitMethod方法,然后覆盖visitMethodInsn方法,在这个方法中,假设要实现一个插入的操作。

这个操作呢,恰好用到了所插入方法的前一个操作的结果或者参数!怎么办!

我们知道,局部变量的需要一般是 P0、arg1、arg2.。。。。
这里P0 代表当前class对象,它的局部变量编号固定为0
arg1代表方法方法中第一个参数,它的局部变量编号为1
arg2.。。。以此类推

但是呢,我们的方法内部有很多代码,我们如何做到精确的访问我们想访问的本地变量呢?

这个时候,nextLocal 就起到了作用,它代表当前所处位置的下一个寄存器位置,对应的还有一个叫做 firstLoacal变量。。。
然后loadLocal(index)

找到了位置,怎么用不用我说了吧!

欢迎留言!

上一篇 下一篇

猜你喜欢

热点阅读