青岛高端模板建站,wordpress传媒传媒企业模板,自适应网站会影响推广,重庆公司注册核名官网概述
JVM#xff0c;Java Virtual Machine#xff0c;Java虚拟机器#xff0c;作为一台独立的机器#xff0c;一般包括独立的指令集、独立的存储体系以及适合机器自身的运算方式#xff0c;本章节主要是描述JVM指令的功能与作用。
JVM的每个指令的格式是【指令 操作数1操…概述
JVMJava Virtual MachineJava虚拟机器作为一台独立的机器一般包括独立的指令集、独立的存储体系以及适合机器自身的运算方式本章节主要是描述JVM指令的功能与作用。
JVM的每个指令的格式是【指令 操作数1操作数2…】其中JVM为每个指令分配一个opcode即操作码使用16进制格式表示每个操作数都对类型进行约束JVM在运行时执行类字节码对应指令的过程中发生错误时都会抛出VirtualMachineError的异常信息该异常对应的子类如下所示 InternalError: JVM内部错误包括JVM执行软件的过程中发生错误、JVM底层的主机软硬件系统发生错误 OutOfMemoryError: JVM堆内存溢出错误JVM在运行过程中所需要占用的总堆内存空间大小超出JVM虚拟内存或者物理内存的总空间大小内存管理器不能为新建的对象申请足够的内存空间大小 StackOverflowError: JVM栈内存溢出错误JVM在运行过程中一个线程所需要占用的栈内存空间大小超出事先设定的总空间大小一般情况下因为程序无限的递归调用而发生程序执行的错误 UnknownError: JVM未知错误JVM在运行过程中发生错误但是JVM未能报告实际的异常或者错误
指令集部分 指令名称aload 功能描述根据数组索引位从数组中加载引用 指令名称astore 功能描述将引用存入到数组对应的索引位 指令名称aload_n 功能描述加载本地变量到操作数栈中其中n表示从0开始的正整数表示第n个本地变量 指令名称anewarray 功能描述创建一个指定大小的引用数组 指令名称areturn 功能描述从方法中返回一个引用 指令名称arraylength 功能描述获取一个数组的引用 指令名称astore 功能描述将一个引用存储到本地变量 指令名称astore_n 功能描述将一个引用存储到本地变量其中n表示从0开始的正整数表示第n个本地变量 指令名称athrow 功能描述抛出一个异常或者错误 指令名称baload 功能描述从数组中加载一个字节类型或者布尔类型 指令名称bastore 功能描述存储一个字节类型或者布尔类型到数组指定的索引位 指令名称bipush 功能描述将一个字节类型压入到操作数栈中 指令名称caload 功能描述从字符数组中加载一个字符 指令名称castore 功能描述将一个字符存储到字符数组中 指令名称checkcast 功能描述检查一个引用是否是给定的类型其中引用类型包括类、数组或者接口 指令名称d2f 功能描述将一个double类型转换成float类型 指令名称d2i 功能描述将一个double类型转换成int类型 指令名称d2l 功能描述将一个double类型转换成long类型 指令名称dadd 功能描述将两个double类型相加 指令名称daload 功能描述从double类型数组中加载一个double类型 指令名称dastore 功能描述将一个double类型存储到double类型的数组中 指令名称dcmpop 功能描述比较两个double类型的大小其中op是操作符g表示大于l表示小于 指令名称dconst_d 功能描述将一个double类型的常量压入操作数栈其中d的值包括0或者1表示第几个常量 指令名称ddiv 功能描述两个double类型相除 指令名称dload 功能描述加载一个double类型的本地变量 指令名称dload_n 功能描述加载一个double类型的本地变量其中n表示从0开始的正整数表示第n个本地变量 指令名称dmul 功能描述将两个double类型相乘 指令名称dneg 功能描述对一个double类型取负值 指令名称drem 功能描述对一个double类型取余 指令名称dreturn 功能描述在一个方法中返回一个double类型 指令名称dstore 功能描述将一个double类型存储到本地变量中 指令名称dstore_n 功能描述将一个double类型存储到本地变量中其中n表示从0开始的正整数表示第n个本地变量 指令名称dsub 功能描述将两个double类型相减 指令名称dup 功能描述复制一个操作数栈顶的操作数类型 指令名称dup_x1 功能描述复制一个操作数栈顶的操作数类型并将新复制的操作数类型插入到操作数栈顶以下的索引位2从0开始 指令名称dup_x2 功能描述复制一个操作数栈顶的操作数类型并将新复制的操作数类型插入到操作数栈顶以下的索引位2或者3从0开始
指令集分类 Constants 常量类 00 (0x00) nop 01 (0x01) aconst_null 02 (0x02) iconst_m1 03 (0x03) iconst_0 04 (0x04) iconst_1 05 (0x05) iconst_2 06 (0x06) iconst_3 07 (0x07) iconst_4 08 (0x08) iconst_5 09 (0x09) lconst_0 10 (0x0a) lconst_1 11 (0x0b) fconst_0 12 (0x0c) fconst_1 13 (0x0d) fconst_2 14 (0x0e) dconst_0 15 (0x0f) dconst_1 16 (0x10) bipush 17 (0x11) sipush 18 (0x12) ldc 19 (0x13) ldc_w 20 (0x14) ldc2_w Loads 加载类 21 (0x15) iload 22 (0x16) lload 23 (0x17) fload 24 (0x18) dload 25 (0x19) aload 26 (0x1a) iload_0 27 (0x1b) iload_1 28 (0x1c) iload_2 29 (0x1d) iload_3 30 (0x1e) lload_0 31 (0x1f) lload_1 32 (0x20) lload_2 33 (0x21) lload_3 34 (0x22) fload_0 35 (0x23) fload_1 36 (0x24) fload_2 37 (0x25) fload_3 38 (0x26) dload_0 39 (0x27) dload_1 40 (0x28) dload_2 41 (0x29) dload_3 42 (0x2a) aload_0 43 (0x2b) aload_1 44 (0x2c) aload_2 45 (0x2d) aload_3 46 (0x2e) iaload 47 (0x2f) laload 48 (0x30) faload 49 (0x31) daload 50 (0x32) aaload 51 (0x33) baload 52 (0x34) caload 53 (0x35) saload Stores 存储类 54 (0x36) istore 55 (0x37) lstore 56 (0x38) fstore 57 (0x39) dstore 58 (0x3a) astore 59 (0x3b) istore_0 60 (0x3c) istore_1 61 (0x3d) istore_2 62 (0x3e) istore_3 63 (0x3f) lstore_0 64 (0x40) lstore_1 65 (0x41) lstore_2 66 (0x42) lstore_3 67 (0x43) fstore_0 68 (0x44) fstore_1 69 (0x45) fstore_2 70 (0x46) fstore_3 71 (0x47) dstore_0 72 (0x48) dstore_1 73 (0x49) dstore_2 74 (0x4a) dstore_3 75 (0x4b) astore_0 76 (0x4c) astore_1 77 (0x4d) astore_2 78 (0x4e) astore_3 79 (0x4f) iastore 80 (0x50) lastore 81 (0x51) fastore 82 (0x52) dastore 83 (0x53) aastore 84 (0x54) bastore 85 (0x55) castore 86 (0x56) sastore Stack 栈操作类 87 (0x57) pop 88 (0x58) pop2 89 (0x59) dup 90 (0x5a) dup_x1 91 (0x5b) dup_x2 92 (0x5c) dup2 93 (0x5d) dup2_x1 94 (0x5e) dup2_x2 95 (0x5f) swap Math 运算类 96 (0x60) iadd 97 (0x61) ladd 98 (0x62) fadd 99 (0x63) dadd 100 (0x64) isub 101 (0x65) lsub 102 (0x66) fsub 103 (0x67) dsub 104 (0x68) imul 105 (0x69) lmul 106 (0x6a) fmul 107 (0x6b) dmul 108 (0x6c) idiv 109 (0x6d) ldiv 110 (0x6e) fdiv 111 (0x6f) ddiv 112 (0x70) irem 113 (0x71) lrem 114 (0x72) frem 115 (0x73) drem 116 (0x74) ineg 117 (0x75) lneg 118 (0x76) fneg 119 (0x77) dneg 120 (0x78) ishl 121 (0x79) lshl 122 (0x7a) ishr 123 (0x7b) lshr 124 (0x7c) iushr 125 (0x7d) lushr 126 (0x7e) iand 127 (0x7f) land 128 (0x80) ior 129 (0x81) lor 130 (0x82) ixor 131 (0x83) lxor 132 (0x84) iinc Conversions 转换类 133 (0x85) i2l 134 (0x86) i2f 135 (0x87) i2d 136 (0x88) l2i 137 (0x89) l2f 138 (0x8a) l2d 139 (0x8b) f2i 140 (0x8c) f2l 141 (0x8d) f2d 142 (0x8e) d2i 143 (0x8f) d2l 144 (0x90) d2f 145 (0x91) i2b 146 (0x92) i2c 147 (0x93) i2s Comparisons 比较类 148 (0x94) lcmp 149 (0x95) fcmpl 150 (0x96) fcmpg 151 (0x97) dcmpl 152 (0x98) dcmpg 153 (0x99) ifeq 154 (0x9a) ifne 155 (0x9b) iflt 156 (0x9c) ifge 157 (0x9d) ifgt 158 (0x9e) ifle 159 (0x9f) if_icmpeq 160 (0xa0) if_icmpne 161 (0xa1) if_icmplt 162 (0xa2) if_icmpge 163 (0xa3) if_icmpgt 164 (0xa4) if_icmple 165 (0xa5) if_acmpeq 166 (0xa6) if_acmpne Control 控制类 167 (0xa7) goto 168 (0xa8) jsr 169 (0xa9) ret 170 (0xaa) tableswitch 171 (0xab) lookupswitch 172 (0xac) ireturn 173 (0xad) lreturn 174 (0xae) freturn 175 (0xaf) dreturn 176 (0xb0) areturn 177 (0xb1) return References 引用类 178 (0xb2) getstatic 179 (0xb3) putstatic 180 (0xb4) getfield 181 (0xb5) putfield 182 (0xb6) invokevirtual 183 (0xb7) invokespecial 184 (0xb8) invokestatic 185 (0xb9) invokeinterface 186 (0xba) invokedynamic 187 (0xbb) new 188 (0xbc) newarray 189 (0xbd) anewarray 190 (0xbe) arraylength 191 (0xbf) athrow 192 (0xc0) checkcast 193 (0xc1) instanceof 194 (0xc2) monitorenter 195 (0xc3) monitorexit Extended 扩展类 196 (0xc4) wide 197 (0xc5) multianewarray 198 (0xc6) ifnull 199 (0xc7) ifnonnull 200 (0xc8) goto_w 201 (0xc9) jsr_w Reserved 预留类 202 (0xca) breakpoint 254 (0xfe) impdep1 255 (0xff) impdep2