概述
java 虚拟机的指令由一个操作码(Opcode)以及零或多个操作数(Operands)组成。其中,操作码是一个字节长度的数字,不同的数字代表不同的操作码。对于操作数而言,一个字节码的数字代表一个操作数。由于 java 虚拟机采用面向操作数栈而不是寄存器的架构,因此,大多数的指令都不包含操作数,只有一个操作码。
在 java 虚拟机的指令集中,大多数的指令都包含了其操作所对应的数据类型信息,在这些指令中,操作码中第一个字母表明了其数据类型:i 代表 int,l 代表 long,s 代表 short,b 代表 byte,c 代表 char,f 代表 float,d 代表 double,a 代表 reference。
由于操作码只占一个字节,所以最多只有 256 个指令,这也决定了 java 虚拟机中只对一些常用的操作提供了有限的类型相关识别指令,对于剩下的部分,java 虚拟机通过类型转换将其他类型转成虚拟机指令支持的类型然而再进行操作。
由于虚拟机指令很多,而且部分指令功能类似,所以本文只介绍部分常用的指令。