91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JVM操作數棧的方法是什么

發布時間:2022-01-05 17:15:42 來源:億速云 閱讀:128 作者:iii 欄目:云計算

這篇文章主要介紹“JVM操作數棧的方法是什么”,在日常操作中,相信很多人在JVM操作數棧的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JVM操作數棧的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

和局部變量區一樣,操作數棧也是被組織成一個以字長為單位的數組。但是和前者不同的是,它不是通過索引來訪問,而是通過標準的棧操作—壓棧和出棧—來訪問的。比如,如果某個指令把一個值壓入到操作數棧中,稍后另一個指令就可以彈出這個值來使用。

虛擬機在操作數棧中存儲數據的方式和在局部變量區中是一樣的:如int、long、float、double、reference和returnType的存儲。對于byte、short以及char類型的值在壓入到操作數棧之前,也會被轉換為int。

不同于程序計數器,Java虛擬機沒有寄存器,程序計數器也無法被程序指令直接訪問。Java虛擬機的指令是從操作數棧中而不是從寄存器中取得操作數的,因此它的運行方式是基于棧的而不是基于寄存器的。雖然指令也可以從其他地方取得操作數,比如從字節碼流中跟隨在操作碼(代表指令的字節)之后的字節中或從常量池中,但是主要還是從操作數棧中獲得操作數。

虛擬機把操作數棧作為它的工作區——大多數指令都要從這里彈出數據,執行運算,然后把結果壓回操作數棧。比如,iadd指令就要從操作數棧中彈出兩個整數,執行加法運算,其結果又壓回到操作數棧中,看看下面的示例,它演示了虛擬機是如何把兩個int類型的局部變量相加,再把結果保存到第三個局部變量的:

begin
iload_0 // push the int in local variable 0 onto the stack
iload_1 // push the int in local variable 1 onto the stack
iadd // pop two ints, add them, push result
istore_2 // pop int, store into local variable 2

在這個字節碼序列里,前兩個指令iload_0和iload_1將存儲在局部變量中索引為0和1的整數壓入操作數棧中,其后iadd指令從操作數棧中彈出那兩個整數相加,再將結果壓入操作數棧。第四條指令istore_2則從操作數棧中彈出結果,并把它存儲到局部變量區索引為2的位置。圖5-10詳細表述了這個過程中局部變量和操作數棧的狀態變化,圖中沒有使用的局部變量區和操作數棧區域以空白表示。
JVM操作數棧的方法是什么

到此,關于“JVM操作數棧的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jvm
AI

广元市| 崇左市| 新郑市| 和政县| 宜阳县| 板桥市| 台南县| 定西市| 鱼台县| 内江市| 肇州县| 景泰县| 胶州市| 凌海市| 恩施市| 伽师县| 珲春市| 西畴县| 永年县| 建宁县| 保山市| 迭部县| 奎屯市| 金塔县| 论坛| 巴里| 湘乡市| 年辖:市辖区| 高唐县| 凤凰县| 咸宁市| 兴化市| 兴城市| 同心县| 平果县| 井冈山市| 长治县| 海晏县| 原阳县| 大化| 武穴市|