java字节码指令

  1. java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需要参数的操作码(Operands)所构成。但是虚拟机中很多指令并不包含操作数,只有一个操作码

  2. 对于大部分为数据类型相关的字节码指令,他们的操作码助记符中都有特殊的字符来表明专门为哪种数据类型服务:i 代表对int类型的数据操作,l 代表long,s 代表short,b 代表byte,c 代表着char,f 代表着 float,d 代表着double, a 代表reference

  3. 主要有如下指令

  • 加载存储指令

iload、fload ...将局部变量加载到操作栈中
istore、fstore ...将一个数值从操作数栈存储到局部变量表
bipush、sipush、iconst ... 将一个常量加载到操作数栈

  • 运算指令

iadd isub imul idiv ... (加减乘除)

  • 类型转换指令

i2b i2c i2s l2i等

  • 对象访问指令

new newarray 创建指令
getfiled putfield getstatic putstatic 访问类和实例字段
baload iaload 将一个数组元素加载带操作数栈的指令

  • 方法调用和返回指令

invokevirtual invokeinterface invokespecial invokestatic invokedynamic

  • 还包括:同步指令、异常处理指令、控制转移指令等

你可能感兴趣的:(java字节码指令)