一、概述:
官方文档:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html
二、执行模型:
三、数据类型:
上图可以看出
字节码指令大体上可以分为三类,一类是和数据类型有关,第二类是 没有明确地知名操作类型,第三类是和数据类型无关。
四、指令分类:
五、详细介绍指令
(1)加载与存储指令:
a、局部变量压栈指令:
b、常量入栈指令:
c、出栈装入局部变量表指令:
(2)算数指令:
算术指令:
(3)类型转换指令
说明:
自动转换:
强制类型转换:
(4)对象创建和访问指令:
概述:
a、创建指令:
b、字段访问指令:
c、数组操作指令:
d、类型检查指令:
(5)方法调用与返回指令:
a、方法调用指令:
b、返回指令:
(6)操作数栈管理指令:
(7)控制转移指令:
程序流程离不开条件控制,为了支持条件跳转,虚拟机提供了大量字节码指令,大体上可以分为
a、比较指令 b、条件跳转指令 c、比较条件跳转指令
d、多条件分支跳转指令 e、无条件跳转指令。
a、比较指令:
b、条件跳转指令:
c、比较条件跳转指令:
d、多条件分支跳转指令:
e、无条件跳转指令:
(8)异常处理指令:
a、抛出异常指令:
b、异常处理与异常表
(9)同步控制指令:
Java虚拟机支持两种同步结构:方法级的同步和方法内部一段指令序列的同步,这两种同步都是使用monitor来支持的。
a、方法级的同步:
b、方法内一段指令序列的同步: