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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java虚拟机字节码指令概述

發(fā)布時(shí)間:2025/4/14 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java虚拟机字节码指令概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

虛擬機(jī)字節(jié)碼指令

Java虛擬機(jī)的指令由一個(gè)字節(jié)長度的、代表著某種特定操作含義的數(shù)字(稱為操作碼,Opcode)以及跟隨其后的零至多個(gè)代表此操作所需參數(shù)(稱為操作數(shù),Operands)而構(gòu)成。

一 基本數(shù)據(jù)類型、加載和存儲(chǔ)指令

1、除了long和double類型外,每個(gè)變量都占局部變量區(qū)中的一個(gè)變量槽(slot),而long及double會(huì)占用兩個(gè)連續(xù)的變量槽。

2、大多數(shù)對(duì)于boolean、byte、short和char類型數(shù)據(jù)的操作,都使用相應(yīng)的int類型作為運(yùn)算類型。

?

加載和存儲(chǔ)指令

1、將一個(gè)局部變量加載到操作棧;
2、將一個(gè)數(shù)值從操作數(shù)棧存儲(chǔ)到局部變量表;
3、將一個(gè)常量加載到操作數(shù)棧;

存儲(chǔ)數(shù)據(jù)的操作數(shù)棧和局部變量表主要就是由加載和存儲(chǔ)指令進(jìn)行操作,除此之外,還有少量指令,如訪問對(duì)象的字段或數(shù)組元素的指令也會(huì)向操作數(shù)棧傳輸數(shù)據(jù)。

二、const系列
該系列命令主要負(fù)責(zé)把簡單的數(shù)值類型送到棧頂。

三、push系列
該系列命令負(fù)責(zé)把一個(gè)整形數(shù)字(長度比較小)送到到棧頂。

四、ldc系列
該系列命令負(fù)責(zé)把數(shù)值常量或String常量值從常量池中推送至棧頂。

五、load系列
5.1、load系列A
該系列命令負(fù)責(zé)把本地變量的送到棧頂。
5.2、load系列B
該系列命令負(fù)責(zé)把數(shù)組的某項(xiàng)送到棧頂。

六、store系列
6.1、store系列A
該系列命令負(fù)責(zé)把棧頂?shù)闹荡嫒氡镜刈兞俊?br /> 6.2、store系列B
該系列命令負(fù)責(zé)把棧頂項(xiàng)的值存到數(shù)組里。

七、pop系列
該系列命令似乎只是簡單對(duì)棧頂進(jìn)行操作,

八、棧頂元素?cái)?shù)學(xué)操作及移位操作系列
該系列命令用于對(duì)棧頂元素行數(shù)學(xué)操作,和對(duì)數(shù)值進(jìn)行移位操作。

運(yùn)算指令
1、運(yùn)算或算術(shù)指令用于對(duì)兩個(gè)操作數(shù)棧上的值進(jìn)行某種特定運(yùn)算,并把結(jié)果重新存入到操作棧頂。
2、算術(shù)指令分為兩種:整型運(yùn)算的指令和浮點(diǎn)型運(yùn)算的指令。
3、無論是哪種算術(shù)指令,都使用Java虛擬機(jī)的數(shù)據(jù)類型,由于沒有直接支持byte、short、char和boolean類型的算術(shù)指令,使用操作int類型的指令代替。

類型轉(zhuǎn)換指令

對(duì)象創(chuàng)建與訪問指令
? ?創(chuàng)建類實(shí)例的指令:new。
? ?創(chuàng)建數(shù)組的指令:newarray、anewarray、multianewarray。

操作數(shù)棧管理指令

控制轉(zhuǎn)移指令

方法調(diào)用和返回指令
? ? invokevirtual 指令用于調(diào)用對(duì)象的實(shí)例方法,根據(jù)對(duì)象的實(shí)際類型進(jìn)行分派(虛方法分派),這也是Java語言中最常見的方法分派方式。

異常處理指令
? ? 在Java程序中顯式拋出異常的操作(throw語句)都由athrow指令來實(shí)現(xiàn),除了用throw語句顯式拋出異常情況之外,Java虛擬機(jī)規(guī)范還規(guī)定了許多運(yùn)行時(shí)異常會(huì)在其他Java虛擬機(jī)指令檢測到異常狀況時(shí)自動(dòng)拋出。

同步指令
? ? 方法級(jí)同步 方法內(nèi)部一段指令序列的同步

總結(jié)

以上是生活随笔為你收集整理的Java虚拟机字节码指令概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。