- aaload
- aastore
- aconst_null
- aload,aload_
- anewarray
- areturn
- arraylength
- astore,astore_
- athrow
- baload
- bastore
- bipush
- caload
- castore
- checkcast
- d2f, d2i, d2l
- dadd
- daload
- dastore
- dcmp
- dconst_
- ddiv
- dload, dload_
- dmul
- dneg
- drem
- dreturn
- dstore, dstore_
- dsub
- dup
- dup_x1
- dup_x2
- dup2
- dup2_x1
- dup2_x2
- f2d, f2i, f2l
- fadd
- faload
- fastore
- fcmp
- fconst_
- fdiv
- fload, fload_
- fmul
- fneg
- frem
- freturn
- fstore, fstore_
- fsub
- getfield
- getstatic
- goto, goto_w
- i2b, i2c, i2d, i2f, i2l, i2s
- iadd
- iaload
- iand
- iastore
- iconst_
- idiv
- if_acmp
- if_icmp
- if
- ifnonnull, ifnull
- iinc
- iload, iload_
- imul
- ineg
- instanceof
- invokedynamic
- invokeinterface
- invokespecial
- invokestatic
- invokevirtual
- ior, irem
- ireturn
- ishl, ishr, iushr
- istore, istore_
- isub, ixor
- l2d, l2f, l2i
- ladd
- laload
- land
- lastore
- lcmp
- lconst_
- ldc, ldc_w, ldc2_w
- ldiv
- lload, lload_
- lmul
- lneg
- lookupswitch
- lor, lrem
- lreturn
- lshl, lshr, lushr
- lstore, lstore_
- lsub, lxor
- monitorenter, monitorexit
- multianewarray
- new
- newarray
- nop
- pop, pop2
- putfield
- putstatic
- return
- saload
- sastore
- sipush
- swap
- tableswitch
- wide
内容大部分参考粘贴
- 《 Java 虚拟机规范 Java SE 8 版》
- Oracle 官网的虚拟机规范
aaload
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
aastore
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
aconst_null
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
aload,aload_
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
anewarray
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
areturn
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
arraylength
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
astore,astore_
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
athrow
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
baload
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
bastore
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
bipush
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
caload
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
castore
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
checkcast
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
d2f, d2i, d2l
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dadd
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
daload
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dastore
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dcmp
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dconst_
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
ddiv
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dload, dload_
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dmul
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dneg
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
drem
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dreturn
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dstore, dstore_
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dsub
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dup
操作 | 复制操作数栈栈顶的值,并插入到栈顶 |
---|---|
格式 | dup |
结构 | dup = 89 ( 0x59 ) |
操作数栈 | … , value → … , value , value |
描述 | 复制操作数栈栈顶的值,并将此值入栈到操作数栈顶 |
dup_x1
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dup_x2
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
dup2
dup2_x1
dup2_x2
f2d, f2i, f2l
fadd
faload
fastore
fcmp
fconst_
fdiv
fload, fload_
fmul
fneg
frem
freturn
fstore, fstore_
fsub
getfield
getstatic
goto, goto_w
i2b, i2c, i2d, i2f, i2l, i2s
iadd
iaload
iand
iastore
iconst_
idiv
if_acmp
if_icmp
if
ifnonnull, ifnull
iinc
iload, iload_
imul
ineg
instanceof
invokedynamic
invokeinterface
invokespecial
操作 | 调用实例方法,专门用来调用父类方法、私有方法和实例初始化方法 |
---|---|
格式 | invokespecial indexbyte1 indexbyte2 |
结构 | invokespecial=183 ( 0xb87 ) |
操作数栈 | …. , objectref , [ arg1 , [ arg2…]]→ …. |
描述 | 无符号数 indexbyte1 和 indexbyte2 用于构建一个指向当前类的运行时常量池的索引值,构建方式为 ( indexbyte<<8 | indexbyte2 ),该索引所指向的运行时常量池应当是个对某个方法或接口方法的符号引用,其中包含了方法的名称和描述符,以及指向该方法所在类或接口的符号引用。这个方法的符号引用已被解析过 如果调用的方法时 protected 的,并且这个方法时当前类的父类成员,而这个方法又没有在同一个运行时包中声明过,那么 objectref 所指向的对象的类型必须为当前类或者当前类的子类 在下面所有的条件都成立的前提下,将当前类的直接超类记为 C: - 解析出来的方法不是实例初始化方法。 - 如果符号引用指向的是类而不是接口,那么所指的类是当前类的超类。 - class 文件的 ACC_SUPER 标志是真。 否则,就把符号引用所指的类或接口记为 C。 虚拟机将按下面的规则查找实际执行的方法: - 如果 C 中包含了名称和描述符都与要调用的实例方法一致的方法,那么这个方法就会被调用,查找过程终止 - 否则,如果 C 是类,并且有父类,那么查找过程将按顺序递归搜索 C 的直接父类,以及父类的父类、知道搜索到名称和描述符都与要调用的实例方法一致的方法,或再也没有父类是为止,如果找到了相符的方法,那么这个方法就会被调用 |
链接时异常 | |
运行时异常 | |
注意 |
invokestatic
操作 | 调用类(静态)方法 |
---|---|
格式 | invokestatic indexbyte1 indexbyte2 |
结构 | invokestatic=184 ( 0xb8 ) |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |
invokevirtual
ior, irem
ireturn
ishl, ishr, iushr
istore, istore_
isub, ixor
l2d, l2f, l2i
ladd
laload
land
lastore
lcmp
lconst_
ldc, ldc_w, ldc2_w
ldiv
lload, lload_
lmul
lneg
lookupswitch
lor, lrem
lreturn
lshl, lshr, lushr
lstore, lstore_
lsub, lxor
monitorenter, monitorexit
multianewarray
new
操作 | 创建一个对象 |
---|---|
格式 | new indexbyte1 indexbyte2 |
结构 | new = 187 (0xbb) |
操作数栈 | …→ … , objectref |
描述 | 无符号数 indexbyte1 和 indexbyte2 用于构建一个指向当前类的运行时常量池的索引值,构建方式 (indexbyte1<<8) | indexbyte2,该索引所指向的银杏是常量池应当是一个类或接口的符号引用,这个类或接口类型应当是已被解析过的,并且最终解析结果为某个具体的类。一个以此为类的新实例将会被分配在 GC 堆中,并且它所有的实例变量都会初始化为相应类型的初始值。一个代表该对象实例的 reference 类型数据 objectref 将入栈到操作数栈中 一个已成功解析但是未初始化的类,在这时将会进行初始化 |
链接时异常 | 在类、接口或数组的符号解析阶段,可能抛出‘类与接口解析’所描述的异常 否则,如果类、接口或者数组的符号引用最终被解析为一个接口或抽象类,new 执行将抛出 InstantiationError |
运行时异常 | 如果 new 执行触发了类的初始化,那么 new 指令可能会抛出任意在 JLS 中所描述的异常 |
注意 | new 执行执行后并没有完成一个对象实例创建的全部过程,只有执行和完成了实例初始化方法后,实例才算创建完全 |
newarray
操作 | |
---|---|
格式 | |
结构 | |
操作数栈 | |
描述 | |
链接时异常 | |
运行时异常 | |
注意 |