真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JVM常用指令速查表的示例分析

小編給大家分享一下JVM常用指令速查表的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)專注于豐寧網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供豐寧營銷型網(wǎng)站建設(shè),豐寧網(wǎng)站制作、豐寧網(wǎng)頁設(shè)計、豐寧網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造豐寧網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供豐寧網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

JVM 基本指令

基本指令集是最常用的,總結(jié)如下:

指令釋義
iconst_1int型常量值1進(jìn)棧
bipush將一個byte型常量值推送至棧頂
iload_1第二個int型局部變量進(jìn)棧,從0開始計數(shù)
istore_1將棧頂int型數(shù)值存入第二個局部變量,從0開始計數(shù)
iadd棧頂兩int型數(shù)值相加,并且結(jié)果進(jìn)棧
return當(dāng)前方法返回void
getstatic獲取指定類的靜態(tài)域,并將其值壓入棧頂
putstatic為指定的類的靜態(tài)域賦值
invokevirtual調(diào)用實例方法
invokespecial調(diào)用超類構(gòu)造方法、實例初始化方法、私有方法
invokestatic調(diào)用靜態(tài)方法
invokeinterface調(diào)用接口方法
new創(chuàng)建一個對象,并且其引用進(jìn)棧
newarray創(chuàng)建一個基本類型數(shù)組,并且其引用進(jìn)棧

JVM 指令集

這個指令集也不是最全的,但是 99% 的都收錄了進(jìn)來。這個表格包含:指令碼、助記符、功能描述三列。

指令碼助記符功能描述
0x00nop無操作
0x01aconst_null指令格式:aconst_null 功能描述:null進(jìn)棧。注意:JVM并沒有為null指派一個具體的值。
0x02iconst_m1int型常量值-1進(jìn)棧
0x03iconst_0int型常量值0進(jìn)棧
0x04iconst_1int型常量值1進(jìn)棧
0x05iconst_2int型常量值2進(jìn)棧
0x06iconst_3int型常量值3進(jìn)棧
0x07iconst_4int型常量值4進(jìn)棧
0x08iconst_5int型常量值5進(jìn)棧
0x09lconst_0long型常量值0進(jìn)棧
0x0Alconst_1long型常量值1進(jìn)棧
0x0Bfconst_0float型常量值0進(jìn)棧
0x0Cfconst_1float型常量值1進(jìn)棧
0x0Dfconst_2float型常量值2進(jìn)棧
0x0Edconst_0double型常量值0進(jìn)棧
0x0Fdconst_1double型常量值1進(jìn)棧
0x10bipush將一個byte型常量值推送至棧頂
0x11sipush將一個short型常量值推送至棧頂
0x12ldc將int、float或String型常量值從常量池中推送至棧頂
0x13ldc_w將int、float或String型常量值從常量池中推送至棧頂(寬索引)
0x14ldc2_w將long或double型常量值從常量池中推送至棧頂(寬索引)
0x15iload指定的int型局部變量進(jìn)棧
0x16lload指定的long型局部變量進(jìn)棧
0x17fload指定的float型局部變量進(jìn)棧
0x18dload指定的double型局部變量進(jìn)棧
0x19aload指令格式:aload index。功能描述:當(dāng)前frame的局部變量數(shù)組中下標(biāo)為 index 的引用型局部變量進(jìn)棧。index:無符號一byte整型。和wide指令聯(lián)用,可以使index為兩byte。
0x1Aiload_0第一個int型局部變量進(jìn)棧
0x1Biload_1第二個int型局部變量進(jìn)棧
0x1Ciload_2第三個int型局部變量進(jìn)棧
0x1Diload_3第四個int型局部變量進(jìn)棧
0x1Elload_0第一個long型局部變量進(jìn)棧
0x1Flload_1第二個long型局部變量進(jìn)棧
0x20lload_2第三個long型局部變量進(jìn)棧
0x21lload_3第四個long型局部變量進(jìn)棧
0x22fload_0第一個float型局部變量進(jìn)棧
0x23fload_1第二個float型局部變量進(jìn)棧
0x24fload_2第三個float型局部變量進(jìn)棧
0x25fload_3第四個float型局部變量進(jìn)棧
0x26dload_0第一個double型局部變量進(jìn)棧
0x27dload_1第二個double型局部變量進(jìn)棧
0x28dload_2第三個double型局部變量進(jìn)棧
0x29load_3第四個double型局部變量進(jìn)棧
0x2Aaload_0指令格式:aload_0 指令的行為類似于aload指令index為0的情況。
0x2Baload_1同上
0x2Caload_2同上
0x2Daload_3同上
0x2Eiaload指定的int型數(shù)組的指定下標(biāo)處的值進(jìn)棧
0x2Flaload指定的long型數(shù)組的指定下標(biāo)處的值進(jìn)棧
0x30faload指定的float型數(shù)組的指定下標(biāo)處的值進(jìn)棧
0x31daload指定的double型數(shù)組的指定下標(biāo)處的值進(jìn)棧
0x32aaload指令格式:aaload 功能描述:棧頂?shù)臄?shù)組下標(biāo)(index)、數(shù)組引用(arrayref)出棧,并根據(jù)這兩個數(shù)值取出對應(yīng)的數(shù)組元素值(value)進(jìn)棧。拋出異常:如果arrayref的值為null,會拋出 ullPointerException。如果index造成數(shù)組越界,會拋出 rrayIndexOutOfBoundsException。
0x33baload指定的boolean或byte型數(shù)組的指定下標(biāo)處的值進(jìn)棧
0x34caload指定的char型數(shù)組的指定下標(biāo)處的值進(jìn)棧
0x35saload指定的short型數(shù)組的指定下標(biāo)處的值進(jìn)棧
0x36istore將棧頂int型數(shù)值存入指定的局部變量
0x37lstore將棧頂long型數(shù)值存入指定的局部變量
0x38fstore將棧頂float型數(shù)值存入指定的局部變量
0x39dstore將棧頂double型數(shù)值存入指定的局部變量
0x3Aastore指令格式:astore index,功能描述:將棧頂數(shù)值(objectref)存入當(dāng)前frame的局部變量數(shù)組中指定下標(biāo) ndex 處的變量中,棧頂數(shù)值出棧。
0x3Bistore_0將棧頂int型數(shù)值存入第一個局部變量
0x3Cistore_1將棧頂int型數(shù)值存入第二個局部變量
0x3Distore_2將棧頂int型數(shù)值存入第三個局部變量
0x3Eistore_3將棧頂int型數(shù)值存入第四個局部變量
0x3Flstore_0將棧頂long型數(shù)值存入第一個局部變量
0x40lstore_1將棧頂long型數(shù)值存入第二個局部變量
0x41lstore_2將棧頂long型數(shù)值存入第三個局部變量
0x42lstore_3將棧頂long型數(shù)值存入第四個局部變量
0x43fstore_0將棧頂float型數(shù)值存入第一個局部變量
0x44fstore_1將棧頂float型數(shù)值存入第二個局部變量
0x45fstore_2將棧頂float型數(shù)值存入第三個局部變量
0x46fstore_3將棧頂float型數(shù)值存入第四個局部變量
0x47dstore_0將棧頂double型數(shù)值存入第一個局部變量
0x48dstore_1將棧頂double型數(shù)值存入第二個局部變量
0x49dstore_2將棧頂double型數(shù)值存入第三個局部變量
0x4Adstore_3將棧頂double型數(shù)值存入第四個局部變量
0x4Bastore_0指令格式:astore_0 能描述:  該指令的行為類似于astore指令index為0的情況。
0x4Castore_1同上
0x4Dastore_2同上
0x4Eastore_3同上
0x4Fiastore將棧頂int型數(shù)值存入指定數(shù)組的指定下標(biāo)處
0x50lastore將棧頂long型數(shù)值存入指定數(shù)組的指定下標(biāo)處
0x51fastore將棧頂float型數(shù)值存入指定數(shù)組的指定下標(biāo)處
0x52dastore將棧頂double型數(shù)值存入指定數(shù)組的指定下標(biāo)處
0x53aastore指令格式:aastore,功能描述:  根據(jù)棧頂?shù)囊眯蛿?shù)值(value)、數(shù)組下標(biāo)(index)、數(shù)組引用(arrayref)出棧,將數(shù)值存入對應(yīng)的數(shù)組元素中。拋出異常:  如果value的類型和arrayref所引用的數(shù)組的元素類型不兼容,會拋出拋出ArrayStoreException。如果index造成數(shù)組越界,會拋出ArrayIndexOutOfBoundsException。如果arrayref值為null,會拋出NullPointerException。
0x54bastore將棧頂boolean或byte型數(shù)值存入指定數(shù)組的指定下標(biāo)處
0x55castore將棧頂char型數(shù)值存入指定數(shù)組的指定下標(biāo)處
0x56sastore將棧頂short型數(shù)值存入指定數(shù)組的指定下標(biāo)處
0x57pop棧頂數(shù)值出棧 (該棧頂數(shù)值不能是long或double型)
0x58pop2棧頂?shù)囊粋€(如果是long、double型的)或兩個(其它類型的)數(shù)值出棧
0x59dup復(fù)制棧頂數(shù)值,并且復(fù)制值進(jìn)棧
0x5Adup_x1復(fù)制棧頂數(shù)值,并且復(fù)制值進(jìn)棧2次
0x5Bdup_x2復(fù)制棧頂數(shù)值,并且復(fù)制值進(jìn)棧2次或3次
0x5Cdup2復(fù)制棧頂一個(long、double型的)或兩個(其它類型的)數(shù)值,并且復(fù)制值進(jìn)棧
0x5Ddup2_x1
0x5Edup2_x2
0x5Fswap棧頂?shù)膬蓚€數(shù)值互換(要求棧頂?shù)膬蓚€數(shù)值不能是long或double型的)
0x60iadd棧頂兩int型數(shù)值相加,并且結(jié)果進(jìn)棧
0x61ladd棧頂兩long型數(shù)值相加,并且結(jié)果進(jìn)棧
0x62fadd棧頂兩float型數(shù)值相加,并且結(jié)果進(jìn)棧
0x63dadd棧頂兩double型數(shù)值相加,并且結(jié)果進(jìn)棧
0x64isub棧頂兩int型數(shù)值相減,并且結(jié)果進(jìn)棧
0x65lsub棧頂兩long型數(shù)值相減,并且結(jié)果進(jìn)棧
0x66fsub棧頂兩float型數(shù)值相減,并且結(jié)果進(jìn)棧
0x67dsub棧頂兩double型數(shù)值相減,并且結(jié)果進(jìn)棧
0x68imul棧頂兩int型數(shù)值相乘,并且結(jié)果進(jìn)棧
0x69lmul棧頂兩long型數(shù)值相乘,并且結(jié)果進(jìn)棧
0x6Afmul棧頂兩float型數(shù)值相乘,并且結(jié)果進(jìn)棧
0x6Bdmul棧頂兩double型數(shù)值相乘,并且結(jié)果進(jìn)棧
0x6Cidiv棧頂兩int型數(shù)值相除,并且結(jié)果進(jìn)棧
0x6Dldiv棧頂兩long型數(shù)值相除,并且結(jié)果進(jìn)棧
0x6Efdiv棧頂兩float型數(shù)值相除,并且結(jié)果進(jìn)棧
0x6Fddiv棧頂兩double型數(shù)值相除,并且結(jié)果進(jìn)棧
0x70irem棧頂兩int型數(shù)值作取模運算,并且結(jié)果進(jìn)棧
0x71lrem棧頂兩long型數(shù)值作取模運算,并且結(jié)果進(jìn)棧
0x72frem棧頂兩float型數(shù)值作取模運算,并且結(jié)果進(jìn)棧
0x73drem棧頂兩double型數(shù)值作取模運算,并且結(jié)果進(jìn)棧
0x74ineg棧頂int型數(shù)值取負(fù),并且結(jié)果進(jìn)棧
0x75lneg棧頂long型數(shù)值取負(fù),并且結(jié)果進(jìn)棧
0x76fneg棧頂float型數(shù)值取負(fù),并且結(jié)果進(jìn)棧
0x77dneg棧頂double型數(shù)值取負(fù),并且結(jié)果進(jìn)棧
0x78ishlint型數(shù)值左移指定位數(shù),并且結(jié)果進(jìn)棧
0x79lshllong型數(shù)值左移指定位數(shù),并且結(jié)果進(jìn)棧
0x7Aishrint型數(shù)值帶符號右移指定位數(shù),并且結(jié)果進(jìn)棧
0x7Blshrlong型數(shù)值帶符號右移指定位數(shù),并且結(jié)果進(jìn)棧
0x7Ciushrint型數(shù)值無符號右移指定位數(shù),并且結(jié)果進(jìn)棧
0x7Dlushrlong型數(shù)值無符號右移指定位數(shù),并且結(jié)果進(jìn)棧
0x7Eiand棧頂兩int型數(shù)值按位與,并且結(jié)果進(jìn)棧
0x7Fland棧頂兩long型數(shù)值按位與,并且結(jié)果進(jìn)棧
0x80ior棧頂兩int型數(shù)值按位或,并且結(jié)果進(jìn)棧
0x81lor棧頂兩long型數(shù)值按位或,并且結(jié)果進(jìn)棧
0x82ixor棧頂兩int型數(shù)值按位異或,并且結(jié)果進(jìn)棧
0x83lxor棧頂兩long型數(shù)值按位異或,并且結(jié)果進(jìn)棧
0x84iinc指定int型變量增加指定值
0x85i2l棧頂int值強轉(zhuǎn)long值,并且結(jié)果進(jìn)棧
0x86i2f棧頂int值強轉(zhuǎn)float值,并且結(jié)果進(jìn)棧
0x87i2d棧頂int值強轉(zhuǎn)double值,并且結(jié)果進(jìn)棧
0x88l2i棧頂long值強轉(zhuǎn)int值,并且結(jié)果進(jìn)棧
0x89l2f棧頂long值強轉(zhuǎn)float值,并且結(jié)果進(jìn)棧
0x8Al2d棧頂long值強轉(zhuǎn)double值,并且結(jié)果進(jìn)棧
0x8Bf2i棧頂float值強轉(zhuǎn)int值,并且結(jié)果進(jìn)棧
0x8Cf2l棧頂float值強轉(zhuǎn)long值,并且結(jié)果進(jìn)棧
0x8Df2d棧頂float值強轉(zhuǎn)double值,并且結(jié)果進(jìn)棧
0x8Ed2i棧頂double值強轉(zhuǎn)int值,并且結(jié)果進(jìn)棧
0x8Fd2l棧頂double值強轉(zhuǎn)long值,并且結(jié)果進(jìn)棧
0x90d2f棧頂double值強轉(zhuǎn)float值,并且結(jié)果進(jìn)棧
0x91i2b棧頂int值強轉(zhuǎn)byte值,并且結(jié)果進(jìn)棧
0x92i2c棧頂int值強轉(zhuǎn)char值,并且結(jié)果進(jìn)棧
0x93i2s棧頂int值強轉(zhuǎn)short值,并且結(jié)果進(jìn)棧
0x94lcmp比較棧頂兩long型數(shù)值大小,并且結(jié)果(1,0,-1)進(jìn)棧
0x95fcmpl比較棧頂兩float型數(shù)值大小,并且結(jié)果(1,0,-1)進(jìn)棧;當(dāng)其中一個數(shù)值為NaN時, -1進(jìn)棧
0x96fcmpg比較棧頂兩float型數(shù)值大小,并且結(jié)果(1,0,-1)進(jìn)棧;當(dāng)其中一個數(shù)值為NaN時,1進(jìn)棧
0x97dcmpl比較棧頂兩double型數(shù)值大小,并且結(jié)果(1,0,-1)進(jìn)棧;當(dāng)其中一個數(shù)值為NaN時,-1進(jìn)棧
0x98dcmpg比較棧頂兩double型數(shù)值大小,并且結(jié)果(1,0,-1)進(jìn)棧;當(dāng)其中一個數(shù)值為NaN時,1進(jìn)棧
0x99ifeq當(dāng)棧頂int型數(shù)值等于0時跳轉(zhuǎn)
0x9Aifne當(dāng)棧頂int型數(shù)值不等于0時跳轉(zhuǎn)
0x9Biflt當(dāng)棧頂int型數(shù)值小于0時跳轉(zhuǎn)
0x9Cifge當(dāng)棧頂int型數(shù)值大于等于0時跳轉(zhuǎn)
0x9Difgt當(dāng)棧頂int型數(shù)值大于0時跳轉(zhuǎn)
0x9Eifle當(dāng)棧頂int型數(shù)值小于等于0時跳轉(zhuǎn)
0x9Fif_icmpeq比較棧頂兩int型數(shù)值大小,當(dāng)結(jié)果等于0時跳轉(zhuǎn)
0xA0if_icmpne比較棧頂兩int型數(shù)值大小,當(dāng)結(jié)果不等于0時跳轉(zhuǎn)
0xA1if_icmplt比較棧頂兩int型數(shù)值大小,當(dāng)結(jié)果小于0時跳轉(zhuǎn)
0xA2if_icmpge比較棧頂兩int型數(shù)值大小,當(dāng)結(jié)果大于等于0時跳轉(zhuǎn)
0xA3if_icmpgt比較棧頂兩int型數(shù)值大小,當(dāng)結(jié)果大于0時跳轉(zhuǎn)
0xA4if_icmple比較棧頂兩int型數(shù)值大小,當(dāng)結(jié)果小于等于0時跳轉(zhuǎn)
0xA5if_acmpeq比較棧頂兩引用型數(shù)值,當(dāng)結(jié)果相等時跳轉(zhuǎn)
0xA6if_acmpne比較棧頂兩引用型數(shù)值,當(dāng)結(jié)果不相等時跳轉(zhuǎn)
0xA7goto無條件跳轉(zhuǎn)
0xA8jsr跳轉(zhuǎn)至指定16位offset位置,并將jsr下一條指令地址壓入棧頂
0xA9ret返回至局部變量指定的index的指令位置(通常與jsr、jsr_w聯(lián)合使用)
0xAAtableswitch用于switch條件跳轉(zhuǎn),case值連續(xù)(可變長度指令)
0xABlookupswitch用于switch條件跳轉(zhuǎn),case值不連續(xù)(可變長度指令)
0xACireturn當(dāng)前方法返回int
0xADlreturn當(dāng)前方法返回long
0xAEfreturn當(dāng)前方法返回float
0xAFdreturn當(dāng)前方法返回double
0xB0areturn指令格式:  areturn。功能描述:  從方法中返回一個對象的引用。拋出異常:  如果當(dāng)前方法是synchronized方法,并且當(dāng)前線程不是改方法的鎖的擁有者,會拋出IllegalMonitorStateException。
0xB1return當(dāng)前方法返回void
0xB2getstatic獲取指定類的靜態(tài)域,并將其值壓入棧頂
0xB3putstatic為指定的類的靜態(tài)域賦值
0xB4getfield獲取指定類的實例域,并將其值壓入棧頂
0xB5putfield為指定的類的實例域賦值
0xB6invokevirtual調(diào)用實例方法
0xB7invokespecial調(diào)用超類構(gòu)造方法、實例初始化方法、私有方法
0xB8invokestatic調(diào)用靜態(tài)方法
0xb9invokeinterface調(diào)用接口方法
0xBA因為歷史原因,該碼點為未使用的保留碼點
0xBBnew建一個對象,并且其引用進(jìn)棧
0xBCnewarray創(chuàng)建一個基本類型數(shù)組,并且其引用進(jìn)棧
0xBDanewarray指令格式:anewarray index1 index2,功能描述:  棧頂數(shù)值(count)作為數(shù)組長度,創(chuàng)建一個引用 型數(shù)組。棧頂數(shù)值出棧,數(shù)組引用進(jìn)棧。拋出異常:  如果count小于0,會拋出NegativeArraySizeException
0xBEarraylength指令格式:arraylength,功能描述:棧頂?shù)臄?shù)組引用(arrayref)出棧,該數(shù)組的長度進(jìn)棧。拋出異常:如果arrayref的值為null,會拋出NullPointerException。
0xBFathrow指令格式:athrow,功能描述:  將棧頂?shù)臄?shù)值作為異常或錯誤拋出。出異常:如果棧頂數(shù)值為null,則使用NullPointerException代替棧頂數(shù)值拋出。如果方法是的,則有可能拋出IllegalMonitorStateException。
0xC0checkcast類型轉(zhuǎn)換檢查,如果該檢查未通過將會拋出ClassCastException異常
0xc1instanceof檢查對象是否是指定的類的實例。如果是,1進(jìn)棧;否則,0進(jìn)棧
0xC2monitorenter獲得對象鎖
0xC3monitorexit釋放對象鎖
0xC4wide用于修改其他指令的行為
0xC5multianewarray創(chuàng)建指定類型和維度的多維數(shù)組(執(zhí)行該指令時,棧中必須包含各維度的長度值),并且其引用值進(jìn)棧
0xC6ifnull為null時跳轉(zhuǎn)
0xC7ifnonnull不為null時跳轉(zhuǎn)
0xC8goto_w無條件跳轉(zhuǎn)(寬索引)
0xC9jsr_w跳轉(zhuǎn)至指定32位offset位置,并且jsr_w下一條指令地址進(jìn)棧
0xCAbreakpoint
0xFEimpdep1
0xFFmpdep2

看完了這篇文章,相信你對“JVM常用指令速查表的示例分析”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享題目:JVM常用指令速查表的示例分析
網(wǎng)頁地址:http://weahome.cn/article/gsjsio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部