深入了解java虚拟机(JVM) 第十章 字节码指令
一、字节码指令的含义
Java字节码指令由一个字节长度的,代表某种特定操作含义的数字(操作码)以及其后的零至多个代表此操作所需参数(操作数)。此外字节码指令是面向操作数栈的,这里操作数栈在功能上对应实体机的寄存器但是结构上有所区别。
字节码指令的作用简单的来说就是jvm将我们写好的代码翻译成字节码指令存入code中,然后被虚拟机执行引擎执行的。
二、字节码指令的特点
1.大多数指令是包含类型信息的,如:Iload、fload指令,前面的I和f代表int类型和float类型。
2.也有一些不包含类型信息的指令,如goto
3.类型多、指令少
三、字节码的类型介绍
1.加载和存储指令
加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回传输。
2.运算指令
运算指令用于对两个操作数栈上的值进行某种特定的运算,并把结果存储到操作数栈顶。
3.类型转换指令
类型转换指令可以将两张不同的数组类型进行转换,这些转换操作一般用于实现用户代码中的显示类型转换操作,以及用来处理字节码指令集中数据类型相关指令无法与数据类型一一对应的问题。
4.对象创建与访问指令
创建类实例、数组或访问类和数的指令。
5.操作数栈指令
操作数栈指令用于直接操作操作数栈。
6.控制转移指令(if else、switch 、for、while……)
控制转移指令可以让java虚拟机有条件或无条件的从指定位置指令而不是控制转移指令的下一条指令继续执行程序,可以认为控制转移指令就是在修改PC寄存器的值。
7.方法调用指令
用于调用对象、接口中的方法指令
8.异常处理指令
在程序中显式抛出异常操作会由athrow指令实现try/catch代码块,但是在高版本JDK中,try/catch代码块不会影响程序的性能,这是因为catch的执行不再使用字节码指令,而是使用Exception table执行。
9.同步指令
类似与管程(synchronized代码块)的指令。
想要了解详细的指令,可以参考:http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html
深入了解java虚拟机(JVM) 第十章 字节码指令的更多相关文章
- 深入理解java虚拟机(六)字节码指令简介
Java虚拟机指令是由(占用一个字节长度.代表某种特定操作含义的数字)操作码Opcode,以及跟随在其后的零至多个代表此操作所需参数的称为操作数 Operands 构成的.由于Java虚拟机是面向操作 ...
- 深入理解Java虚拟机06--虚拟机字节码执行引擎
一.前言 物理机的执行引擎是直接在物理硬件如CPU.操作系统.指令集上运行的,但是对于虚拟机来讲,他的执行引擎由自己实现. 执行引擎有统一的外观(Java虚拟机规范),不同类型的虚拟机都遵循了这一规范 ...
- JVM学习笔记——字节码指令
JVM学习笔记——字节码指令 字节码 0与 1是计算机仅能识别的信号,经过0和1的不同组合产生了数字之上的操作.另外,通过不同的组合亦产生了各种字符.同样,可以通过不同的组合产生不同的机器指令.在不同 ...
- 深入理解java虚拟机(5)---字节码执行引擎
字节码是什么东西? 以下是百度的解释: 字节码(Byte-code)是一种包含执行程序.由一序列 op 代码/数据对组成的二进制文件.字节码是一种中间码,它比机器码更抽象. 它经常被看作是包含一个执行 ...
- 深入解析java虚拟机-jvm运行机制
转自oschina 一:JVM基础概念 JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现.编译虚拟机的指令集与编译微处理器的指令集非常类似.Java虚拟机包括一套字 ...
- 【JVM源码解析】模板解释器解释执行Java字节码指令(上)
本文由HeapDump性能社区首席讲师鸠摩(马智)授权整理发布 第17章-x86-64寄存器 不同的CPU都能够解释的机器语言的体系称为指令集架构(ISA,Instruction Set Archit ...
- <JVM中篇:字节码与类的加载篇>03-类的加载过程(类的生命周期)详解
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- <JVM中篇:字节码与类的加载篇>01-Class字节码文件结构
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- 硬核万字长文,深入理解 Java 字节码指令(建议收藏)
Java 字节码指令是 JVM 体系中非常难啃的一块硬骨头,我估计有些读者会有这样的疑惑,"Java 字节码难学吗?我能不能学会啊?" 讲良心话,不是我谦虚,一开始学 Java 字 ...
随机推荐
- mybatis相对于ibatis的优势
2010年,apache的Ibatis框架停止更新,并移交给了google团队,同时更名为MyBatis.从2010年后Ibatis在没更新过,彻底变成了一个孤儿框架.一个没人维护的框架注定被myba ...
- 使用API调用外部程序并监控程序状态
Public Type SHELLEXECUTEINFO cbSize As Long fMask As Long hwnd As Long lpVerb As String ...
- URL的名称设置
1. 对于login.html 此为跳转文件, 加入了参数nid,在views.py中进行关于request.POST.get()的文件中获取 <a href='/detail?nid={{k} ...
- JDK动态代理代码示例
JDK动态代理代码示例 业务接口 实现了业务接口的业务类 实现了InvocationHandler接口的handler代理类 1.业务接口 package com.wzq.demo01; /** * ...
- Web页面显示日期和动态时刻脚本
<script language="JavaScript" type="text/JavaScript"> <!-- tm ...
- 745. Prefix and Suffix Search 查找最大index的单词
[抄题]: Given many words, words[i] has weight i. Design a class WordFilter that supports one function, ...
- React Native 常用插件案例
(二).基础入门: 1.React Native For Android环境配置以及第一个实例 2.React Native开发IDE安装及配置 3.React Native应用设备运行(Runnin ...
- 启动memcached
/usr/local/bin/memcached -d -c -m -u root
- pcd转obj
文件转换 从PCD文件写入和读取点云数据:https://www.cnblogs.com/li-yao7758258/p/6435568.html 点云数据格式PCD(Point Cloud Data ...
- 深入浅出 MappedByteBuffer
前言 java io操作中通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件,不过java nio中引入了一种基于MappedByteBuffer操 ...