日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

操作数栈的字节码指令执行分析

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作数栈的字节码指令执行分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:寫個demo

?

二:點擊Recompile編譯

?

三:使用javap命令反編譯class文件 ? ? ???javap -v 類名.class

?

四:查看結果

?

?

五:分析執行過程

首先bipush意思是把byte類型的變量i的值15存放到操作數棧中,istore_1的意思是把操作數棧中int類型的i的值取出來存放到局部變量表中索引為1的位置,為什么一開始就從索引1開始存的,因為這個方法不是靜態方法,局部變量表的索引0位置存放了this,接著操作數棧就沒有了,i出棧了,接著bipush 8的意思是把8放到操作數為索引0的位置上,接著istore_2的意思是把操作數棧中的8存放到局部變量表索引為2的位置上,iload_1和iload_2指令的意思是把局部變量表中索引為1和2位置的數據依次取出來,放到操作數棧中,接下來進行iadd操作,接著出棧,這個字節碼指令被執行引擎翻譯成機器指令,然后被cpu執行,由cpu運算,把8和15相加的和23,接著23放到了操作數棧中,istore_3意思是把23以int類型存儲到局部變量表中索引為3的位置上,最后因為方法沒有其他操作,沒有返回值,最后return結束

(byte,short,char,boolean 都以int型來保存)

總結

以上是生活随笔為你收集整理的操作数栈的字节码指令执行分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。