美文网首页
如果在方法中准确的访问局部变量的index

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

作者: 孔祥子看天下 | 来源:发表于2017-07-24 17:19 被阅读10次

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

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

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

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

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

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

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

欢迎留言!

相关文章

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

    本篇不是正文,只是简单记录一下感想,比较短。 通常使用ASM 在方法中插入方法调用的时候,会拦截visitMeth...

  • 编程知识梳理-闭包

    javascript中的闭包简单的概念:外部方法包含内部方法,内部方法可以访问外部方法的局部变量,并且在外部方法结...

  • Lua Metatable

    算数运算和逻辑运算(类似操作符重载) 库定义的元方法 table访问的元方法__index 如果访问table中字...

  • js闭包

    js中任何函数可以访问全局变量,但是局部变量除了访问自己内部的局部变量和自己上级的局部变量之外无法访问别的函数的局...

  • 2018-08-03 Java中static、final、sta

    说明:不一定准确,但是最快理解。 final: final可以修饰:属性,方法,类,局部变量(方法中的变量) fi...

  • Java中static、final、static final的区

    说明:不一定准确,但是最快理解。 final: final可以修饰:属性,方法,类,局部变量(方法中的变量) fi...

  • JAVA中final,static,static final区别

    说明:不一定准确,但是最快理解。 final: final可以修饰:属性,方法,类,局部变量(方法中的变量) fi...

  • 08.局部内部类的概述和使用

    局部内部类的概述和使用 局部内部类,定义在外部类方法中的局部位置。与访问方法中的局部变量相似,可通过调用方法进行访...

  • tp5部署空间/服务器/导致访问任何地址都只显示首页

    thinkphp5写的项目,部署到Linux环境下,不管访问那个方法,都强制跳转到Index/index方法。 第...

  • self与super

    self访问成员变量 成员变量是定义在类中的变量,它可以被所在类的方法所调用,而局部变量是定义在方法中的变量,当局...

网友评论

      本文标题:如果在方法中准确的访问局部变量的index

      本文链接:https://www.haomeiwen.com/subject/bowbkxtx.html