如果在方法中準確的訪問局部變量的index

本篇不是正文,只是簡單記錄一下感想,比較短。

通常使用ASM 在方法中插入方法調用的時候,會攔截visitMethod方法,然后覆蓋visitMethodInsn方法,在這個方法中,假設要實現一個插入的操作。

這個操作呢,恰好用到了所插入方法的前一個操作的結果或者參數!怎么辦!

我們知道,局部變量的需要一般是 P0、arg1、arg2.。。。。
這里P0 代表當前class對象,它的局部變量編號固定為0
arg1代表方法方法中第一個參數,它的局部變量編號為1
arg2.。。。以此類推

但是呢,我們的方法內部有很多代碼,我們如何做到精確的訪問我們想訪問的本地變量呢?

這個時候,nextLocal 就起到了作用,它代表當前所處位置的下一個寄存器位置,對應的還有一個叫做 firstLoacal變量。。。
然后loadLocal(index)

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

歡迎留言!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容