JVM操作數(shù)棧的方法是什么

這篇文章主要介紹“JVM操作數(shù)棧的方法是什么”,在日常操作中,相信很多人在JVM操作數(shù)棧的方法是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”JVM操作數(shù)棧的方法是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比寧明網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式寧明網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋寧明地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴(lài)。

和局部變量區(qū)一樣,操作數(shù)棧也是被組織成一個(gè)以字長(zhǎng)為單位的數(shù)組。但是和前者不同的是,它不是通過(guò)索引來(lái)訪(fǎng)問(wèn),而是通過(guò)標(biāo)準(zhǔn)的棧操作—壓棧和出?!獊?lái)訪(fǎng)問(wèn)的。比如,如果某個(gè)指令把一個(gè)值壓入到操作數(shù)棧中,稍后另一個(gè)指令就可以彈出這個(gè)值來(lái)使用。

虛擬機(jī)在操作數(shù)棧中存儲(chǔ)數(shù)據(jù)的方式和在局部變量區(qū)中是一樣的:如int、long、float、double、reference和returnType的存儲(chǔ)。對(duì)于byte、short以及char類(lèi)型的值在壓入到操作數(shù)棧之前,也會(huì)被轉(zhuǎn)換為int。

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

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

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

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

到此,關(guān)于“JVM操作數(shù)棧的方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

文章題目:JVM操作數(shù)棧的方法是什么
網(wǎng)站鏈接:http://bm7419.com/article2/igsgoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站網(wǎng)站設(shè)計(jì)公司、網(wǎng)頁(yè)設(shè)計(jì)公司、用戶(hù)體驗(yàn)網(wǎng)站策劃、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)