字节码指令分类

字节码指令大致分为九类:

一:加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回传输

二:算术指令用于对两个操作数栈上的值进行某种特定运算,并把结果重新存入到操作栈顶。运算指令可以分为两种:对整型数据进行运算的指令与对浮点型数据进行运算的指令;无论是哪种算术指令,均是使用Java虚拟机的算术类型来进行计算的,换句话说是不存在直接支持byte、short、char和boolean类型的算术指令,对于上述几种数据的运算,应使用操作int类型的指令代替

三:类型转换指令可以将两种不同的数值类型相互转换,这些转换操作一般用于实现用户代码中的显式类型转换操作,或用来处理字节码指令集中数据类型相关指令无法与数据类型一一对应的问题

小范围向大范围安全转换,窄化类型转换必须显示的使用转换指令,即强转

四:对象创建与访问指令,类实例和数组的创建与操作使用了不同的字节码指令。对象创建后,就可以通过对象访问指令获取对象实例或者数组实例中的字段或者数组元素(创建类实例、创建数组、访问类字段(static字段,或者称为类变量)和实例字段、把一个数组元素加载到操作数栈、将一个操作数栈的值储存到数组元素、取数组长度、检查类实例类型等指令)

五:操作数栈管理指令,用于直接操作操作数栈的指令(将操作数栈的栈顶一个或两个元素出栈、将栈最顶端的两个数值互换等指令)

六:控制转移指令可以让Java虚拟机有条件或无条件地从指定位置指令(而不是控制转移指令)的下一条指令继续执行程序(条件分支、复合条件分支、无条件分支)

七:方法调用和返回指令;方法调用指令与数据类型无关,而方法返回指令是根据返回值的类型区分的,包括ireturn(当返回值是boolean、byte、char、short和int类型时使用)、lreturn、freturn、dreturn和areturn,另外还有一条return指令供声明为void的方法、实例初始化方法、类和接口的类初始化方法使用

八:异常处理指令,显式抛出异常的操作;处理异常(catch语句)不是由字节码指令来实现的而是采用异常表来完成

九:同步指令,Java虚拟机可以支持方法级的同步和方法内部一段指令序列的同步,都使用管程(就是“锁”)实现;方法级的同步是隐式的,无须通过字节码指令来控制,它实现在方法调用和返回操作之中;同步一段指令集序列通常是由Java语言中的synchronized语句块来表示的,Java虚拟机的指令集中有monitorenter和monitorexit两条指令来支持synchronized关键字的语义,正确实现synchronized关键字需要Javac编译器与Java虚拟机两者共同协作支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/162236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VivadoAndTcl: eval

用于拼接执行多个命令。后面可以接一个或者多个参数,如果是一个参数,则把这个参数当做命令来执行,如果是多个参数,则将多个参数用concat命令连接起来后再执行。 举例如下: # 一个参数的情况 set do {set var0 {hello…

【Linux】make/Makefile 进度条小程序

目录 一,认识 make/makefile 二,实例代码 1,依赖关系 2,原理 3,项目清理 4,测试讲解 三,Linux第一个小程序-进度条 game.h game.c test.c 程序详解 一,认识 m…

教你如何将Web项目部署到Linux中

文章目录 前言0. 什么是部署1. 调整代码达成一致2. 数据库建表3. 构建项目并打包4. 拷贝到 Tomcat 中5. 效果总结 前言 在我们完成了一个Web项目后, 我们该怎样将项目部署到 Linux 系统中呢? 本文就来简单讲解一下. 文章已部署本人的博客系统代码展开讲解. 关注收藏, 开始学…

NeurIPS 2023 | RGIB:对抗双边图噪声的鲁棒图学习

▐ 摘要 链接预测[1,2]是图学习的一种基础任务,用于判断图中的两个节点是否可能相连,被广泛应用于药物发现、知识图谱补全和在线问答等实际场景。尽管图神经网络(Graph Neural Network,GNN)在该问题的性能上取得了显著…

机器学习的概念和类型

1、人工智能、机器学习、深度学习之间的关系 人工智能(AI)是广泛的概念,指赋予计算机智能特性。机器学习(ML)是AI的一个分支,是指通过计算机学习和改进性能。深度学习(DL)是ML的一类…

搭个网页应用,让ChatGPT帮我写SQL

大家好,我是凌览。 开门见山,我搭了一个网页应用名字叫sql-translate。访问链接挂在我的个人博客(https://linglan01.cn/about)导航栏,也可以访问https://www.linglan01.cn/c/sql-translate/直达sql-translate。 它的主要功能有:…

第95步 深度学习图像目标检测:Faster R-CNN建模

基于WIN10的64位系统演示 一、写在前面 本期开始,我们学习深度学习图像目标检测系列。 深度学习图像目标检测是计算机视觉领域的一个重要子领域,它的核心目标是利用深度学习模型来识别并定位图像中的特定目标。这些目标可以是物体、人、动物或其他可识…

Docker Swarm总结(1/3)

目录 1、swarm 理论基础 1.1 简介 1.2 节点架构 1.3 服务架构 1.4 服务部署模式 2、swarm 集群搭建 2.1 需求 ​2.2 克隆主机 2.3 启动5个docker宿主机 2.4 查看 swarm 激活状态 2.5 关闭防火墙 2.6 swarm 初始化 2.7 添加 worker 节点 2.8 添加 manager 节点 3、…

Mybatis-Plus3.0默认主键策略导致自动生成19位长度主键id的坑

码字不易,如果对您有用,求各位看官点赞关注~ 原创/朱季谦 目前的Mybatis-Plus版本是3.0,至于最新版本是否已经没有这个问题,后续再考虑研究。 某天检查一位离职同事写的代码,发现其对应表虽然设置了AUTO_INCREMENT自…

7.1 Windows驱动开发:内核监控进程与线程回调

在前面的文章中LyShark一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以监控进程线程创建为例,在Win10系统中监控进程与线程可以使用微软提供给我们的两个新函数来实现,此类函数的原…

H3C路由器基本配置命令

1、system-view 进入系统视图 2、sysname R1 配置路由器名字为R1 3、display clock 查看当前系统时间 4、clock datetime 00:00:00 2/26/2023 用户模式下修改系统时间 配置控制台密码 Console: 1、user-interface aux0 在系统模式下进入图接口 2、authentication-mo…

2023亚太赛c题完整思路数据 数学建模亚太

Question 1: Analyze the main factors that affect the development of new energy electric vehicles in China, establish a mathematical model, and describe the impact of these factors on the development of new energy electric vehicles in China. 问题1:分析影响…

office 365企业版安装教程

1.下载所需工具(防火墙和防毒软件记得关闭) 下载链接:所需文件 2.安装激活office 1.安装 office tool plus 2.已安装过office 先进行office的移除,再进行未安装office的步骤进行 3.未安装过office 1.设置部署 按照以下来进行安…

Linux命令(130)之hwclock

linux命令之hwclock 1.hwclock介绍 linux命令hwclock是用来显示硬件时钟 2.hwclock用法 hwclock [参数] hwclock参数 参数说明-s让系统时间同步硬件时间-w让硬件时间同步系统时间 3.实例 3.1.同步服务器时钟时间 命令: ntpdate pool.ntp.org [rootrhel77 ~…

【vin 国标正则校验】

规则一 var checkVINfunction(VIN){if(typeof(VIN)!string) return false;if(VIN.length!17) return false;VINVIN.toUpperCase();RE/^[A-HJ-NPR-Z\d]{8}[X\d][A-HJ-NPR-Z\d]{3}\d{5}$/if(!RE.test(VIN)) return false;let cOT{0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:1,B…

360:流氓or保家卫国的勇士?

你曾用过360吗,这个在国内名声不好的杀毒软件,却是令国外黑客闻风丧胆的存在。 首先,在电脑病毒刚兴起的年代,杀毒软件是要收费的,当时盛行的瑞星和金山就是采用的付费模式,而就在2006年,奇虎…

C/C++通过位操作实现2个uint32_t合并为uint64_t

#include <iostream> using namespace std;int main() {uint32_t a 10;uint32_t b 600;//先将uint32_t的a转为uint64_t&#xff0c;此时a前面32位都是0&#xff0c;然后左移32位&#xff0c;此时右32位为0&#xff0c;最后加上uint32_t类型的b&#xff0c;填充右32位的…

解决Activiti5.22流程图部署在Windows上正常,但在linux上部署后出现中文变方块的问题

总结/朱季谦 楼主最近在做公司的工作流平台&#xff0c;发现一个很无语的事情&#xff0c;Activiti5.22的流程图在Windows环境上部署&#xff0c;是可以正常查看的&#xff0c;但发布到公司的Linux服务器上后&#xff0c;在上面进行流程图在线部署时&#xff0c;发现中文都变成…

2023亚太杯数学建模C题思路代码 - 我国新能源电动汽车的发展趋势

1 赛题 问题C 我国新能源电动汽车的发展趋势 新能源汽车是指以先进技术原理、新技术、新结构的非常规汽车燃料为动力来源( 非常规汽车燃料指汽油、柴油以外的燃料&#xff09;&#xff0c;将先进技术进行汽车动力控制和驱动相结 合的汽车。新能源汽车主要包括四种类型&#x…

一套开源、强大且美观的WPF UI控件库 - HandyControl

前言 今天给大家推荐一套开源、强大且美观的WPF UI控件库&#xff1a;HandyControl。 WPF介绍 WPF 是一个强大的桌面应用程序框架&#xff0c;用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能&#xff0c;让开发者可以创…