本篇不是正文,只是簡單記錄一下感想,比較短。
通常使用ASM 在方法中插入方法調用的時候,會攔截visitMethod方法,然后覆蓋visitMethodInsn方法,在這個方法中,假設要實現一個插入的操作。
這個操作呢,恰好用到了所插入方法的前一個操作的結果或者參數!怎么辦!
我們知道,局部變量的需要一般是 P0、arg1、arg2.。。。。
這里P0 代表當前class對象,它的局部變量編號固定為0
arg1代表方法方法中第一個參數,它的局部變量編號為1
arg2.。。。以此類推
但是呢,我們的方法內部有很多代碼,我們如何做到精確的訪問我們想訪問的本地變量呢?
這個時候,nextLocal 就起到了作用,它代表當前所處位置的下一個寄存器位置,對應的還有一個叫做 firstLoacal變量。。。
然后loadLocal(index)
找到了位置,怎么用不用我說了吧!
歡迎留言!