程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JVM之操作碼助記符,jvm助記符

JVM之操作碼助記符,jvm助記符

編輯:JAVA綜合教程

JVM之操作碼助記符,jvm助記符


  整理如下,用於以後查找:

Opcode Mnemonics Note Constants 0x00 nop 無動作 0x01 aconst_null 把 null 推到操作數棧 0x02 iconst_m1 把 int 常量 –1 推到操作數棧 0x03 iconst_0 把 int 常量 0 推到操作數棧 0x04 iconst_1 把 int 常量 1 推到操作數棧 0x05 iconst_2 把 int 常量 2 推到操作數棧 0x06 iconst_3 把 int 常量 3 推到操作數棧 0x07 iconst_4 把 int 常量 4 推到操作數棧 0x08 iconst_5 把 int 常量 5 推到操作數棧 0x09 lconst_0 把 long 常量 0 推到操作數棧 0x0A lconst_1 把 long 常量 1 推到操作數棧 0x0B fconst_0 把 float 常量 0 推到操作數棧 0x0C fconst_1 把 float 常量 1 推到操作數棧 0x0D fconst_2 把 float 常量 2 推到操作數棧 0x0E dconst_0 把 double 常量 0 推到操作數棧 0x0F dconst_1 把 double 常量 1 推到操作數棧 0x10 bipush 把單字節常量(-128~127)推到操作數棧 0x11 sipush 把 short 常量(-32768~32767)推到操作數棧 0x12 ldc 把常量池中的int,float,String型常量取出並推到操作數棧 0x13 ldc_w 把常量池中的int,float,String型常量取出並推到操作數棧(寬索引) 0x14 ldc2_w 把常量池中的long,double型常量取出並推到操作數棧(寬索引) Loads 0x15 iload 把 int 型局部變量推到操作數棧 0x16 lload 把 long 型局部變量推到操作數棧 0x17 fload 把 float 型局部變量推到操作數棧 0x18 dload 把 double 型局部變量推到操作數棧 0x19 aload 把引用型局部變量推到操作數棧 0x1A iload_0 把局部變量第 1 個 int 型局部變量推到操作數棧 0x1B iload_1 把局部變量第 2 個 int 型局部變量推到操作數棧 0x1C iload_2 把局部變量第 3 個 int 型局部變量推到操作數棧 0x1D iload_3 把局部變量第 4 個 int 型局部變量推到操作數棧 0x1E lload_0 把局部變量第 1 個 long 型局部變量推到操作數棧 0x1F lload_1 把局部變量第 2 個 long 型局部變量推到操作數棧 0x20 lload_2 把局部變量第 3 個 long 型局部變量推到操作數棧 0x21 lload_3 把局部變量第 4 個 long 型局部變量推到操作數棧 0x22 fload_0 把局部變量第 1 個 float 型局部變量推到操作數棧 0x23 fload_1 把局部變量第 2 個 float 型局部變量推到操作數棧 0x24 fload_2 把局部變量第 3 個 float 型局部變量推到操作數棧 0x25 fload_3 把局部變量第 4 個 float 型局部變量推到操作數棧 0x26 dload_0 把局部變量第 1 個 double 型局部變量推到操作數棧 0x27 dload_1 把局部變量第 2 個 double 型局部變量推到操作數棧 0x28 dload_2 把局部變量第 3 個 double 型局部變量推到操作數棧 0x29 dload_3 把局部變量第 4 個 double 型局部變量推到操作數棧 0x2A aload_0 把局部變量第 1 個引用型局部變量推到操作數棧 0x2B aload_1 把局部變量第 2 個引用型局部變量推到操作數棧 0x2C aload_2 把局部變量第 3 個引用型局部變量推到操作數棧 0x2D aload_3 把局部變量第 4 個引用 型局部變量推到操作數棧 0x2E iaload 把 int 型數組指定索引的值推到操作數棧 0x2F laload 把 long 型數組指定索引的值推到操作數棧 0x30 faload 把 float 型數組指定索引的值推到操作數棧 0x31 daload 把 double 型數組指定索引的值推到操作數棧 0x32 aaload 把引用型數組指定索引的值推到操作數棧 0x33 baload 把 boolean或byte型數組指定索引的值推到操作數棧 0x34 caload 把 char 型數組指定索引的值推到操作數棧 0x35 saload 把 short 型數組指定索引的值推到操作數棧 Stores 0x36 istore 把棧頂 int 型數值存入指定局部變量 0x37 lstore 把棧頂 long 型數值存入指定局部變量 0x38 fstore 把棧頂 float 型數值存入指定局部變量 0x39 dstore 把棧頂 double 型數值存入指定局部變量 0x3A astore 把棧頂引用型數值存入指定局部變量 0x3B istore_0 把棧頂 int 型數值存入第 1 個局部變量 0x3C istore_1 把棧頂 int 型數值存入第 2 個局部變量 0x3D istore_2 把棧頂 int 型數值存入第 3 個局部變量 0x3E istore_3 把棧頂 int 型數值存入第 4 個局部變量 0x3F lstore_0 把棧頂 long 型數值存入第 1 個局部變量 0x40 lstore_1 把棧頂 long 型數值存入第 2 個局部變量 0x41 lstore_2 把棧頂 long 型數值存入第 3 個局部變量 0x42 lstore_3 把棧頂 long 型數值存入第 4 個局部變量 0x43 fstore_0 把棧頂 float 型數值存入第 1 個局部變量 0x44 fstore_1 把棧頂 float 型數值存入第 2 個局部變量 0x45 fstore_2 把棧頂 float 型數值存入第 3 個局部變量 0x46 fstore_3 把棧頂 float 型數值存入第 4 個局部變量 0x47 dstore_0 把棧頂 double 型數值存入第 1 個局部變量 0x48 dstore_1 把棧頂 double 型數值存入第 2 個局部變量 0x49 dstore_2 把棧頂 double 型數值存入第 3 個局部變量 0x4A dstore_3 把棧頂 double 型數值存入第 4 個局部變量 0x4B astore_0 把棧頂 引用 型數值存入第 1 個局部變量 0x4C astore_1 把棧頂 引用 型數值存入第 2 個局部變量 0x4D astore_2 把棧頂 引用 型數值存入第 3 個局部變量 0x4E astore_3 把棧頂 引用 型數值存入第 4 個局部變量 0x4F iastore 把棧頂 int 型數值存入數組指定索引位置 0x50 lastore 把棧頂 long 型數值存入數組指定索引位置 0x51 fastore 把棧頂 float 型數值存入數組指定索引位置 0x52 dastore 把棧頂 double 型數值存入數組指定索引位置 0x53 aastore 把棧頂 引用 型數值存入數組指定索引位置 0x54 bastore 把棧頂 boolean or byte 型數值存入數組指定索引位置 0x55 castore 把棧頂 char 型數值存入數組指定索引位置 0x56 sastore 把棧頂 short 型數值存入數組指定索引位置 Stack 0x57 pop 把棧頂數值彈出(非long,double數值) 0x58 pop2 把棧頂的一個long或double值彈出,或彈出2個其他類型數值 0x59 dup 復制棧頂數值並把數值入棧 0x5A dup_x1 復制棧頂數值並把數值入棧 0x5B dup_x2 0x5C dup2 0x5D dup2_x1 0x5E dup2_x2 0x5F swap 把棧頂端的兩個數的值交換 Math 0x60 iadd 把棧頂兩個 int 型數值相加並將結果入棧 0x61 ladd 把棧頂兩個 long 型數值相加並將結果入棧 0x62 fadd 把棧頂兩個 float 型數值相加並將結果入棧 0x63 dadd 把棧頂兩個 double 型數值相加並將結果入棧 0x64 isub 把棧頂兩個 int 型數值相減並將結果入棧 0x65 lsub 把棧頂兩個 long 型數值相減並將結果入棧 0x66 fsub 把棧頂兩個 float 型數值相減並將結果入棧 0x67 dsub 把棧頂兩個 double 型數值相減並將結果入棧 0x68 imul 把棧頂兩個 int 型數值相乘並將結果入棧 0x69 lmul 把棧頂兩個 long 型數值相乘並將結果入棧 0x6A fmul 把棧頂兩個 float 型數值相乘並將結果入棧 0x6B dmul 把棧頂兩個 double 型數值相乘並將結果入棧 0x6C idiv 把棧頂兩個 int 型數值相除並將結果入棧 0x6D ldiv 把棧頂兩個 long 型數值相除並將結果入棧 0x6E fdiv 把棧頂兩個 float 型數值相除並將結果入棧 0x6F ddiv 把棧頂兩個 double 型數值相除並將結果入棧 0x70 irem 把棧頂兩個 int 型數值模運算並將結果入棧 0x71 lrem 把棧頂兩個 long 型數值模運算並將結果入棧 0x72 frem 把棧頂兩個 float 型數值模運算並將結果入棧 0x73 drem 把棧頂兩個 double 型數值模運算並將結果入棧 0x74 ineg 把棧頂 int 型數值取負並將結果入棧 0x75 lneg 把棧頂 long 型數值取負並將結果入棧 0x76 fneg 把棧頂 float 型數值取負並將結果入棧 0x77 dneg 把棧頂 double 型數值取負並將結果入棧 0x78 ishl 把 int 型數左移指定位數並將結果入棧 0x79 lshl 把 long 型數左移指定位數並將結果入棧 0x7A ishr 把 int 型數右移指定位數並將結果入棧(有符號) 0x7B lshr 把 long 型數右移指定位數並將結果入棧(有符號) 0x7C iushr 把 int 型數右移指定位數並將結果入棧(無符號) 0x7D lushr 把 long 型數右移指定位數並將結果入棧(無符號) 0x7E iand 把棧頂兩個 int 型數值 按位與 並將結果入棧 0x7F land 把棧頂兩個 long 型數值 按位與 並將結果入棧 0x80 ior 把棧頂兩個 int 型數值 按位或 並將結果入棧 0x81 lor 把棧頂兩個 long 型數值 按或與 並將結果入棧 0x82 ixor 把棧頂兩個 int 型數值 按位異或 並將結果入棧 0x83 lxor 把棧頂兩個 long 型數值 按位異或 並將結果入棧 0x84 iinc 把指定 int 型增加指定值 Conversions 0x85 i2l 把棧頂 int 強轉 long 並入棧 0x86 i2f 把棧頂 int 強轉 float 並入棧 0x87 i2d 把棧頂 int 強轉 double 並入棧 0x88 l2i 把棧頂 long 強轉 int 並入棧 0x89 l2f 把棧頂 long 強轉 float 並入棧 0x8A l2d 把棧頂 long 強轉 double 並入棧 0x8B f2i 把棧頂 float 強轉 int 並入棧 0x8C f2l 把棧頂 float 強轉 long 並入棧 0x8D f2d 把棧頂 float 強轉 double 並入棧 0x8E d2i 把棧頂 double 強轉 int 並入棧 0x8F d2l 把棧頂 double 強轉 long 並入棧 0x90 d2f 把棧頂 double 強轉 float 並入棧 0x91 i2b 把棧頂 int 強轉 byte 並入棧 0x92 i2c 把棧頂 int 強轉 char 並入棧 0x93 i2s 把棧頂 int 強轉 short 並入棧 Comparisons 0x94 lcmp 比較棧頂兩個long 型數值,把結果入棧(-1 or 0 or 1) 0x95 fcmpl 比較棧頂兩個 float 型數值,把結果入棧,若有 NaN,入棧 -1 0x96 fcmpg 比較棧頂兩個 float 型數值,把結果入棧,若有 NaN,入棧 1 0x97 dcmpl 比較棧頂兩個 double 型數值,把結果入棧,若有 NaN,入棧 -1 0x98 dcmpg 比較棧頂兩個 double 型數值,把結果入棧,若有 NaN,入棧 -1 0x99 ifeq 當棧頂 int 型數值等於0時,跳轉 0x9A ifne 當棧頂 int 型數值不等於0時,跳轉 0x9B iflt 當棧頂 int 型數值小於0時,跳轉 0x9C ifge 當棧頂 int 型數值大於等於0時,跳轉 0x9D ifgt 當棧頂 int 型數值大於0時,跳轉 0x9E ifle 當棧頂 int 型數值小於等於0時,跳轉 0x9F if_icmpeq 比較棧頂兩個 int 型數值,等於0時,跳轉 0xA0 if_icmpne 比較棧頂兩個 int 型數值,不等於0時,跳轉 0xA1 if_icmplt 比較棧頂兩個 int 型數值,小於0時,跳轉 0xA2 if_icmpge 比較棧頂兩個 int 型數值,大於等於0時,跳轉 0xA3 if_icmpgt 比較棧頂兩個 int 型數值,大於0時,跳轉 0xA4 if_icmple 比較棧頂兩個 int 型數值,小於等於0時,跳轉 0xA5 if_acmpeq 比較棧頂兩個 引用 型數值,相等時跳轉 0xA6 if_acmpne 比較棧頂兩個 引用 型數值,不相等時跳轉 Control 0xA7 goto 無條件跳轉 0xA8 jsr 跳轉指定16bit偏移位置,並將jsr下一條指令地址入棧 0xA9 ret 返回局部變量指定index指定位置,與jsr,jsr_w配合使用 0xAA tableswitch switch跳轉,case連續 0xAB lookupswitch switch跳轉,case不連續 0xAC ireturn 從當前方法返回 int 0xAD lreturn 從當前方法返回 long 0xAE freturn 從當前方法返回 float 0xAF dreturn 從當前方法返回 double 0xB0 areturn 從當前方法返回 對象引用 0xB1 return 從當前方法返回 void References 0xB2 getstatic 獲取類的靜態域,並將值入棧頂 0xB3 putstatic 為類的靜態域賦值 0xB4 getfield 獲取類的實例域,並將值入棧頂 0xB5 putfield 為類的實例域賦值 0xB6 invokevirtual 調用實例方法 0xB7 invokespecial 調用父類構造方法,實例初始化方法,私有方法 0xB8 invokestatic 調用靜態方法 0xB9 invokeinterface 調用接口方法 0xBA invokedynamic 調用動態鏈接方法 0xBB new 創建一個對象,並將引用值入棧 0xBC newarray 創建一個原始類型數組,並將引用值入棧 0xBD anewarray 創建一個引用類型數組,並將引用值入棧 0xBE arraylength 獲取數組長度並入棧 0xBF athrow 拋出棧頂異常 0xC0 checkcast 檢驗類型轉換 0xC1 instanceof 檢驗是否是類的實例,是1入棧,否0入棧 0xC2 monitorenter 獲取對象的monitor,用於同步塊或方法 0xC3 monitorexit 釋放對象的monitor,用於同步塊或方法 Extended 0xC4 wide 擴展訪問局部變量表的索引寬度 0xC5 multianewarray 創建多維數組,並將引用值入棧 0xC6 ifnull 為 null 時跳轉 0xC7 ifnonnull 非 null 時跳轉 0xC8 goto_w 無條件跳轉(寬索引) 0xC9 jsr_w 跳轉指定32bit偏移位置,並將jsr_w下一條指令地址入棧 Reserved 0xCA breakpoint 調試時的斷點 0xFE impdep1 用於在特定硬件中使用的語言後門 0xFF impdep2 用於在特定硬件中使用的語言後門

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved