操作数栈的字节码指令执行分析
生活随笔
收集整理的這篇文章主要介紹了
操作数栈的字节码指令执行分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:寫個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型來保存)
總結
以上是生活随笔為你收集整理的操作数栈的字节码指令执行分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ask调制流程图_ASK调制及相干解调电
- 下一篇: 平民版均线量化交易模型