当前位置: 首页 > news >正文

JVM指令集

概述

JVM,Java Virtual Machine,Java虚拟机器,作为一台独立的机器,一般包括独立的指令集、独立的存储体系以及适合机器自身的运算方式,本章节主要是描述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类型的数组中

指令名称:dcmp<op>

功能描述:比较两个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

相关文章:

JVM指令集

概述 JVM&#xff0c;Java Virtual Machine&#xff0c;Java虚拟机器&#xff0c;作为一台独立的机器&#xff0c;一般包括独立的指令集、独立的存储体系以及适合机器自身的运算方式&#xff0c;本章节主要是描述JVM指令的功能与作用。 JVM的每个指令的格式是【指令 操作数1操…...

如何用SSH克隆GitHub项目

诸神缄默不语-个人CSDN博文目录 使用场景&#xff1a;由于不可知的网络问题&#xff0c;无法用HTTPS克隆GitHub项目。 报错fatal: unable to access https://github.com/PolarisRisingWar/llm-throught-ages.git/: GnuTLS recv error (-110): The TLS connection was non-pro…...

sqlx库使用指南

sqlx库使用指南 在项目中我们通常可能会使用database/sql连接MySQL数据库。本文借助使用sqlx实现批量插入数据的例子&#xff0c;介绍了sqlx中可能被你忽视了的sqlx.In和DB.NamedExec方法。 sqlx介绍 在项目中我们通常可能会使用database/sql连接MySQL数据库。sqlx可以认为是Go…...

算法篇汇总

文章浏览 I https://leetcode.cn/problems/article-views-i/description/?envTypestudy-plan-v2&envId30-days-of-pandas&langpythondata 我的题解&#xff1a; import pandas as pddef article_views(views: pd.DataFrame) -> pd.DataFrame:dfviews[views[auth…...

typeScript 学习笔记(二)

类接口 TypeScript 入门教程 (xcatliu.com) 十四.类 ① 类 类&#xff1a;定义了一件事物的抽象特点&#xff0c;包含它的属性和方法对象&#xff1a;类的实例&#xff0c;通过new生成面向对象&#xff08;OOP&#xff09;的三大特性&#xff1a;封装、继承、多态封装&…...

redis集群架构详解

一、集群架构搭建 1、配置 在一台机器上模拟多台机器搭建redis集群&#xff0c;一个集群代表一台物理机 集群1路径&#xff1a; /usr/local/redis/redis-cluster/cluster1/9001/redis.conf/usr/local/redis/redis-cluster/cluster1/9004/redis.conf/usr/local/redis/redis-…...

nodejs设置镜像

1、npm镜像地址配置 -- 查看 npm 安装目录 npm root -g-- 查看 npm 配置信息 npm config list-- 查询当前镜像配置 npm get registry-- 或者仅修改 npm 命令镜像 -- 设置为淘宝镜像 npm config set registry https://registry.npmmirror.com -- 修改为官方镜像 npm config set…...

CSS中如何在table中隐藏表格中从第4个开始的多个 <tr> 元素

隐藏指定行 使用 CSS 的 nth-child 选择器来选择表格中的特定行&#xff0c;并隐藏它们。 以下是一个示例 CSS 规则&#xff0c;用于隐藏表格中的第 4 个和第 5 个行&#xff08;索引从 1 开始&#xff09;&#xff1a; table tr:nth-child(4), table tr:nth-child(5) {displ…...

【类和对象】③友元类

文章目录 1.初始化列表2.static静态成员3.友元 1.初始化列表 我们知道在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。虽然调用构造函数之后&#xff0c;对象中已经有了一个初始值&#xff0c;但是不能将其称为对对象中成…...

算法通关村第十六关:黄金挑战:滑动窗口与堆结合

黄金挑战&#xff1a;滑动窗口与堆结合 堆的大小一般是有限的&#xff0c;能直接返回当前位置下的最大值或者最小值 该特征与滑动窗口结合&#xff0c;可以解决一些特定场景的问题 1. 滑动窗口与堆问题的结合 LeetCode239 https://leetcode.cn/problems/sliding-window-maxi…...

6.2.2 【MySQL】InnoDB中的索引方案

上边之所以称为一个简易的索引方案&#xff0c;是因为我们为了在根据主键值进行查找时使用二分法快速定位具体的目录项而假设所有目录项都可以在物理存储器上连续存储&#xff0c;但是这样做有几个问题&#xff1a; InnoDB 是使用页来作为管理存储空间的基本单位&#xff0c;也…...

划片机实现装片、对准、切割、清洗到卸片的自动化操作

划片机是一种用于切割和分离材料的设备&#xff0c;通常用于光学和医疗、IC、QFN、DFN、半导体集成电路、GPP/LED氮化镓等芯片分立器件、LED封装、光通讯器件、声表器件、MEMS等行业。划片机可以实现从装片、对准、切割、清洗到卸片的自动化操作。 以下是划片机实现这些操作的步…...

OpenCV(二十五):边缘检测(一)

目录 1.边缘检测原理 2.Sobel算子边缘检测 3.Scharr算子边缘检测 4.两种算子的生成getDerivKernels() 1.边缘检测原理 其原理是基于图像中灰度值的变化来捕捉图像中的边界和轮廓。梯度则表示了图像中像素强度变化的强弱和方向。 所以沿梯度方向找到有最大梯度值的像素&…...

上行取消指示 DCI format 2_4

上篇介绍了DCI format 2_1的DL传输中断的内容&#xff0c;这篇就看下DCI format 2_4有关的UL 传输取消机制&#xff0c;值得注意的是这里的UL传输针对的是PUSCH和SRS传输。 UL cancellation DCI format 2_4相关机制引入的背景与DCI format 2_1一样&#xff0c;都是因为URLLC和e…...

百望云蝉联2023「Cloud 100 China 」榜单 综合实力再获认可

9月7日&#xff0c;2023 Cloud 100 China 榜单于上海中心正式发布&#xff0c;榜单由靖亚资本与崔牛会联合推出&#xff0c;百望云凭借着过硬的综合实力与卓越的技术创新能力&#xff0c;再次荣登榜单&#xff0c;位居第六位。 本届评选&#xff0c;Top 100 企业的数据指标的权…...

力扣刷题班第1节:Python语法常遗漏的知识

以下仅仅记录和后面力扣刷题相关的、且平常会遗漏的语法知识。 下面这些笔记都是点到为止&#xff0c;不进行深入解释。大多数学过python的朋友看到就知道什么意思的&#xff0c;我就不解释了 字符串 str "I am a cook"# 按照空格切分 str.split(" ") …...

GET 和 POST请求的区别是什么

GET和POST是HTTP请求的两种基本方法&#xff0c;要说它们的区别&#xff0c;接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中&#xff0c;POST通过request body传递参数。 你轻轻松松的给出了一个“标准答案”&#xff1a; GET在浏览器回退时是无害的…...

Python数据分析实战-表连接-merge四种连接方式用法(附源码和实现效果)

实现功能 表连接-merge四种连接方式用法&#xff0c; 将两个pandas表根据一个或者多个键&#xff08;列&#xff09;值进行连接。 实现代码 import pandas as pddf1 pd.DataFrame({key: [a, b, d],data1: range(3)}) print(df1)df2 pd.DataFrame({key: [a, b, c, a, b],dat…...

NFTScan 浏览器再升级:优质数据服务新体验来袭

当前&#xff0c;高质量的 NFT 数据服务已成为区块链用户和开发者的必需。为满足用户数据需求&#xff0c;NFTScan 主站近日进行全面升级&#xff0c;优化了数据服务板块的页面结构&#xff0c;实现更清晰简洁的布局和交互。 NFTScan 的改版充分考虑用户和开发者的数据体验&am…...

C# 去除utf-8 BOM头

static void Main(string[] args) {var a1 Encoding.UTF8.GetBytes("<");var a2 Encoding.UTF8.GetBytes("&#xfeff;<");Console.WriteLine("去除utf-8 bom之前");Console.WriteLine(Encoding.UTF8.GetString(a1));Console.WriteLine(…...

Java注解以及自定义注解

Java注解以及自定义注解 要深入学习注解&#xff0c;我们就必须能定义自己的注解&#xff0c;并使用注解&#xff0c;在定义自己的注解之前&#xff0c;我们就必须要了解Java为 我们提供的元注解和相关定义注解的语法。 1、注解 1.1 注解的官方定义 注解是一种元数据形式。…...

[开学季]ChatPaper全流程教程

文章目录 1. 粗筛&#xff1a;论文全文总结1.1 使用步骤&#xff1a; 1.2 功能描述&#xff1a;2. 论文问答&#xff1a;2. 精读&#xff1a;学术版GPT的论文翻译2.0 论文精读的正确姿势2.1 使用场景1&#xff1a;arxiv论文完美翻译2.2 本地PDF全文翻译&#xff1a;2.3 关于免费…...

Spring学习笔记——4

Spring学习笔记——4 一、基于AOP的声明式事务控制1.1、Spring事务编程概述1.2、搭建测试环境1.3、基于XML声明式事务控制1.4、基于注解声明式事务控制 二、Spring整合web环境2.1、JavaWeb三大组件作用及其特点2.2、Spring整合web环境的思路及实现2.3、Spring的Web开发组件spri…...

Python数据科学入门

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 来自不同角色的人都希望保住自己的工作&#xff0c;因此他们将致力于发展自己的技能以适应当前的市场。这是一个竞争激烈的市场&#xff0c;我们看到越来越多的人对数据科学产生兴趣;该行业有数千门在线课程、训练营和…...

Ubuntu 22.04 编译 DPDK 19.11 igb_uio 和 kni 报错解决办法

由于 Ubuntu22.04 内核版本和gcc版本比较高&#xff0c;在编译dpdk时会报错。 我使用的编译命令是&#xff1a; make install Tx86_64-native-linuxapp-gcc主要有以下几个错误&#xff1a; 1.error: this statement may fall through Build kernel/linux/igb_uioCC [M] /roo…...

Android Studio.exe 下载 2023 最新更新,网盘下载

方便大家下载&#xff0c; 放到了网盘上&#xff0c;自己也保留一份。&#xff08;最前面是最新版本的&#xff0c;慎用&#xff0c; 会有bug什么的&#xff09; 个人使用4.2版本的&#xff0c;感觉够用稳定&#xff0c;其他版本有莫名奇妙的bug&#xff0c;让人头大&#xff0…...

element的el-select给下拉框添加背景

第一步 :popper-append-to-body"false" <el-selectv-model"value"placeholder"请选择":popper-append-to-body"false"><el-optionv-for"item in options":key"item.value":label"item.label&quo…...

正确理解党籍和党龄;入党和转正时间

总的来说党籍、党龄、入党时间、转正时间在性质和时间阶段上均有所区别。 党籍&#xff1a;是指党员资格。经支部党员大会讨论&#xff0c;被批准为预备党员之日起&#xff0c;就有了党籍。若被取消预备党员资格、劝退除名、自行脱党、开除党籍的&#xff0c;就失去了党籍。 …...

C语言基础:printf 函数介绍;以及常用四种常用的数据类型

printf 函数介绍 #include <stdio.h> int main() { /* * %c:字符 ; %d:带符号整数; %f: 浮点数; %s: 一串字符&#xff1b; */ int age21; printf(“hello %s,you are %d years old\n”,“Bob”,age); int i 10; double f96.20; printf(“student number%3d,score%f\n”…...

【LeetCode-中等题】209. 长度最小的子数组

文章目录 题目方法一&#xff1a;滑动窗口&#xff1a;方法二&#xff1a; 题目 方法一&#xff1a;滑动窗口&#xff1a; 参考图解动画&#xff1a;长度最小的子数组 class Solution { //方法一:滑动窗口public int minSubArrayLen(int target, int[] nums) {int n nums.l…...

工作室网站建设费用价格/产品销售方案与营销策略

vue3生命周期、和hookvue3生命周期图生命钩子(与name、setup配置项同级)组合api形式写法hook位置&#xff1a;内容&#xff1a;使用:总结vue3生命周期图 生命钩子(与name、setup配置项同级) beforeCreate() {console.log("-----beforeCreate-----");},created() {con…...

坪山网站建设哪家效益快/深圳百度总部

1 概述目前&#xff0c;火电机组正向着大容量、高参数的方向发展&#xff0c;其运行安全性和经济性在一定程度上依赖于运行控制水平的高低&#xff0c;因此对运行人员的熟练操作及处理事故的能力有了更高的要求&#xff0c;同时随着机组的自动化控制水平的提高&#xff0c;运行…...

广州做外贸网站/网络推广网站推广方法

题意&#xff1a; 每次只能取两端&#xff0c;然后第 i 次取要val[ i ]*i&#xff0c;求一个最大值 一切都是错觉【读者省略此段】 这道题目一开始想的就是记忆化搜索&#xff0c;然后太天真了&#xff1f;好像是&#xff0c;一开始用一维dp[ i ]直接代表一个点的最大。。。…...

网站建设联系方式/自有品牌如何推广

液晶显示多功能电力仪表PD800G-B43电能监测型作为一种智能化&#xff0c;数字化的电量搜集设备&#xff0c;多功用电力表面现已被广泛的运用在各类控制系统&#xff0c;例如SCADA&#xff0c;EMS&#xff0c;BA等系统中&#xff0c;多功用电力表面是一种十分适协作为电能质量监…...

做外贸哪个网站可以接单/网址收录平台

1、下载bootstrap https://getbootstrap.com/docs/4.3/getting-started/download/ 2、在项目目录下创建static文件夹&#xff0c;将下载的bootstrap解压到该static下 3、新建html&#xff0c;layout.html,url_for引用bootstrap.css 这里的block为定义模块 <!DOCTYPE html…...

制作俄语网站/南宁网站推广营销

传入一个需要比较的字符串。例如 [value compare:"********"] &#xff0c;返回 NSOrderedSame。 options:(NSStringCompareOptions)传入 NSStringCompareOptions 枚举的值 enum{NSCaseInsensitiveSearch 1,//不区分大小写比较NSLiteralSearch 2,//区分大小写比较N…...