字节码指令简介

2020-01-26  本文已影响0人  修塔寻千里

Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(操作数,Operands)而构成。

字节码与数据类型

在Java虚拟机指令集中,大多数的指令都包含了其操作所对应的数据类型信息。对于大部分与数据类型相关的字节码指令,它们的操作助记符都有特殊的字符来表明专门为哪种数据类型服务:i代表int类型的数据操作,l代表long,s代表short,b代表byte,c代表char,f代表float,d代表double,a代表reference。

加载和存储指令

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

运算指令

运算或算术指令用于对两个操作数栈上的值进行某种特定运算,并把结果重新存入到操作数栈顶。大体上算术指令分为两种:对整型类型进行运算的指令和对浮点类型运算的指令。

类型转换指令

类型转换指令可以将两种不同的数值类型进行相互转换。Java虚拟机直接支持以下数值类型的宽华类型转换:

对象创建和访问指令

操作数栈管理指令

控制转移指令

方法调用和返回指令

异常处理指令

Java虚拟机中,处理异常(catch语句)不是由字节码指令来实现的(很久以前曾经使用jsr和ret指令来实现,现在不用了),而是用异常表来完成。

同步指令

Java虚拟机支持方法级的同步和方法内部一段指令序列的同步,这两种同步结构都是使用管程(Monitor)来支持的。

参考资料

上一篇 下一篇

猜你喜欢

热点阅读