JVM笔记(5)--类文件结构(3)

第一部分 字节码指令简介

  字节码是什么:字节码指令定义:有一个字节长度的,代表着某种特定操作含义的数字(称之操作码),以及跟随其后的零至多个代表此操作所需的参数(称之为操作数)构成。

  由于虚拟机采用的面向操作数栈而不是面向寄存器的构架。所以大多数指令都不包含操作数,只有一个操作码,指令参数都存放在操作数栈之中。

  字节码指令组成:操作码+操作数,但是因为构架的原因,字节码指令 =操作码

第二部分 字节码的数据类型

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

  2 运算指令:将俩个操作数栈上的值进行某种特定运算,并把结果重新存入到操作数栈顶。

  3 类型转换指令:可以将俩种不同的数值类型进行转换。

  4 对象创建于访问指令:实例和数组都是对象,但是对于实例和数组的创建和访问都是不相同。

  5 操作数栈管理指令:用于直接操作操作数栈的指令。

  6控制转移指令:可以让Java虚拟机有条件或无条件地从指定位置指令的下一条指令继续执行程序,从概念模型上理解,可以认为控制指令就是在有条件或无条件地修改pc寄存器的值。

  7方法调用和返回指令:主要是方法的调用与数据类型无关,而方法返回指令是根据返回的类型区分的。

  8异常处理指令:在《Java虚拟机规范》还规定运行时异常会在其它Java虚拟机指令检测到异常状况自动抛出。

  9 同步指令:可以支持方法级的同步和方法内得一段指令序列的同步。

原文地址:https://www.cnblogs.com/linyu1/p/14254664.html