int LDC = 18; 加载常量
int ILOAD = 21; 加载int类型的变量
int LLOAD = 22; 加载long类型的变量
int FLOAD = 23; 加载float类型的变量
int DLOAD = 24; 加载double类型的变量
int ALOAD = 25; 加载引用(object)类型的变量
int IALOAD = 46; 加载int[]类型的变量
int LALOAD = 47; 加载long[]类型的变量
int FALOAD = 48; 加载float[]类型的变量
int DALOAD = 49; 加载double[]类型的变量
int AALOAD = 50; 加载object[]类型的变量
int BALOAD = 51; 加载boolean[]类型的变量
int CALOAD = 52; 加载char[]类型的变量
int SALOAD = 53; 加载short[]类型的变量
int ISTORE = 54; 存储int类型变量
int LSTORE = 55; 存储long类型变量
int FSTORE = 56; 存储float类型变量
int DSTORE = 57; 存储double类型变量
int ASTORE = 58; 存储引用类型变量
int IASTORE = 79; 存储int[]类型变量
int LASTORE = 80; 存储long[]类型变量
int FASTORE = 81; 存储float[]类型变量
int DASTORE = 82; 存储double[]类型变量
int AASTORE = 83; 存储object[]类型变量
int BASTORE = 84; 存储boolean[]类型变量
int CASTORE = 85; 存储char[]类型变量
int SASTORE = 86; 存储short[]类型变量
//${X}ADD 将栈顶两X型数值相加并将结果压入栈顶
int IADD = 96;
int LADD = 97;
int FADD = 98;
int DADD = 99;
//${X}SUB 将栈顶两X型数值相减并将结果压入栈顶
int ISUB = 100;
int LSUB = 101;
int FSUB = 102;
int DSUB = 103;
//${X}MUL 将栈顶两X型数值相乘并将结果压入栈顶
int IMUL = 104; // -
int LMUL = 105; // -
int FMUL = 106; // -
int DMUL = 107; // -
//${X}DIV 将栈顶两X型数值相除并将结果压入栈顶
int IDIV = 108; // -
int LDIV = 109; // -
int FDIV = 110; // -
int DDIV = 111; // -
//${X}REM 将栈顶两X型数值作取模运算并将结果压入栈顶
int IREM = 112; // -
int LREM = 113; // -
int FREM = 114; // -
int DREM = 115; // -
//${X}NEG 将栈顶X型数值取负并将结果压入栈顶
int INEG = 116; // -
int LNEG = 117; // -
int FNEG = 118; // -
int DNEG = 119; // -
//${X}SHL 将栈顶X型数值左移位指定位数并将结果压入栈顶
int ISHL = 120; // -
int LSHL = 121; // -
//${X}SHR 将栈顶X型数值右移位指定位数并将结果压入栈顶
int ISHR = 122; // -
int LSHR = 123; // -
//${X}USHR 将栈顶X型数值右(无符号)移位指定位数并将结果压入栈顶
int IUSHR = 124; // -
int LUSHR = 125; // -
//${X}AND 将栈顶两X型数值作“按位与”并将结果压入栈顶
int IAND = 126; // -
int LAND = 127; // -
//${X}OR 将栈顶两X型数值作“按位或”并将结果压入栈顶
int IOR = 128; // -
int LOR = 129; // -
//${X}XOR 将栈顶两X型数值作“按位异或”并将结果压入栈顶
int IXOR = 130; // -
int LXOR = 131; // -
int IINC = 132; 将指定int型变量增加指定值(i++,i--,i+=2)
int I2L = 133; 将栈顶int型数值强制转换成long型数值并将结果压入栈顶
int I2F = 134; 将栈顶int型数值强制转换成float型数值并将结果压入栈顶
int I2D = 135; 将栈顶int型数值强制转换成double型数值并将结果压入栈顶
int L2I = 136; 将栈顶long型数值强制转换成int型数值并将结果压入栈顶
int L2F = 137; 将栈顶long型数值强制转换成float型数值并将结果压入栈顶
int L2D = 138; 将栈顶long型数值强制转换成double型数值并将结果压入栈顶
int F2I = 139; 将栈顶float型数值强制转换成int型数值并将结果压入栈顶
int F2L = 140; 将栈顶float型数值强制转换成long型数值并将结果压入栈顶
int F2D = 141; 将栈顶float型数值强制转换成double型数值并将结果压入栈顶
int D2I = 142; 将栈顶double型数值强制转换成int型数值并将结果压入栈顶
int D2L = 143; 将栈顶double型数值强制转换成long型数值并将结果压入栈顶
int D2F = 144; 将栈顶double型数值强制转换成float型数值并将结果压入栈顶
int I2B = 145; 将栈顶int型数值强制转换成boolean型数值并将结果压入栈顶
int I2C = 146; 将栈顶int型数值强制转换成char型数值并将结果压入栈顶
int I2S = 147; 将栈顶int型数值强制转换成short型数值并将结果压入栈顶
int LCMP = 148; 比较栈顶两long型数值大小,并将结果(1,0,-1)压入栈顶
int FCMPL = 149; 比较栈顶两float型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为NaN时,将-1压入栈顶
int FCMPG = 150; 比较栈顶两float型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为NaN时,将1压入栈顶
int DCMPL = 151; 比较栈顶两double型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为NaN时,将-1压入栈顶
int DCMPG = 152; 比较栈顶两double型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为NaN时,将1压入栈顶
int IFEQ = 153; 当栈顶int型数值等于0时跳转
int IFNE = 154; 当栈顶int型数值不等于0时跳转
int IFLT = 155; 当栈顶int型数值小于0时跳转
int IFGE = 156; 当栈顶int型数值大于等于0时跳转
int IFGT = 157; 当栈顶int型数值大于0时跳转
int IFLE = 158; 当栈顶int型数值小于等于0时跳转
int IF_ICMPEQ = 159; 比较栈顶两int型数值大小,当结果不等于0时跳转
int IF_ICMPNE = 160; 比较栈顶两int型数值大小,当结果不等于0时跳转
int IF_ICMPLT = 161; 比较栈顶两int型数值大小,当结果小于0时跳转
int IF_ICMPGE = 162; 比较栈顶两int型数值大小,当结果大于等于0时跳转
int IF_ICMPGT = 163; 比较栈顶两int型数值大小,当结果大于0时跳转
int IF_ICMPLE = 164; 比较栈顶两int型数值大小,当结果小于等于0时跳转
int IF_ACMPEQ = 165; 比较栈顶两引用型数值,当结果相等时跳转
int IF_ACMPNE = 166; 比较栈顶两引用型数值,当结果不相等时跳转
int GOTO = 167; 无条件跳转
int JSR = 168; 跳转至指定16位offset位置,并将jsr下一条指令地址压入栈顶
int RET = 169; 返回至本地变量指定的index的指令位置(一般与jsr,jsr_w联合使用)
int TABLESWITCH = 170; 用于switch条件跳转,case值连续(可变长度指令)
int LOOKUPSWITCH = 171; lookupswitch 用于switch条件跳转,case值不连续(可变长度指令)
int IRETURN = 172; 从当前方法返回int
int LRETURN = 173; 从当前方法返回long
int FRETURN = 174; 从当前方法返回float
int DRETURN = 175; 从当前方法返回double
int ARETURN = 176; 从当前方法返回object
int RETURN = 177; 从当前方法返回void
int GETSTATIC = 178; 获取指定类的静态域,并将其值压入栈顶
int PUTSTATIC = 179; 为指定的类的静态域赋值
int GETFIELD = 180; 获取指定类的实例域,并将其值压入栈顶
int PUTFIELD = 181; 为指定的类的实例域赋值
int INVOKEVIRTUAL = 182; 调用实例方法
int INVOKESPECIAL = 183; 调用超类构造方法,实例初始化方法,私有方法
int INVOKESTATIC = 184; 调用静态方法
int INVOKEINTERFACE = 185;调用接口方法
int INVOKEDYNAMIC = 186; 调用lambda动态方法
int NEW = 187; 创建一个对象,并将其引用值压入栈顶
int NEWARRAY = 188; 创建一个指定原始类型(如int,float,char…)的数组,并将其引用值压入栈顶
int ANEWARRAY = 189; 创建一个引用型(如类,接口,数组)的数组,并将其引用值压入栈顶
int ARRAYLENGTH = 190; 获得数组的长度值并压入栈顶
int ATHROW = 191; 将栈顶的异常抛出
int CHECKCAST = 192; 检验类型转换,检验未通过将抛出ClassCastException
int INSTANCEOF = 193; 检验对象是否是指定的类的实例,如果是将1压入栈顶,否则将0压入栈顶
int MONITORENTER = 194; 获得对象的锁,用于同步方法或同步块
int MONITOREXIT = 195; 释放对象的锁,用于同步方法或同步块
int MULTIANEWARRAY = 197; 创建指定类型和指定维度的多维数组(执行该指令时,操作栈中必须包含各维度的长度值),并将其引用值压入栈顶
int IFNULL = 198; 为null时跳转
int IFNONNULL = 199; 不为null时跳转