0%
操作码 |
操作数 |
说明 |
iconst_x |
|
将int类型x压入栈 |
fconst_x |
|
将float类型x压入栈 |
lconst_x |
|
将long类型x压入栈 |
dconst_x |
|
将double类型x压入栈 |
ldc |
indexbyte(8) |
从由indexbyte指向的运行时常量池入口取出一个字长的值,将其压入栈 |
ldc_w |
indexbyte(16) |
从由indexbyte指向的运行时常量池入口取出一个字长的值,将其压入栈 |
ldc2_w |
indexbyte(16) |
从由indexbyte指向的运行时常量池入口取出两个字长的值,将其压入栈 |
pop |
|
从操作数栈弹出栈顶的一个字 |
swap |
|
交换栈顶的两个字 |
dup |
|
复制栈顶的一个字并压栈 |
iload |
vindex |
将位置为 vindex的int局部变量压入栈 |
iload_x |
|
将位置为x的int局部变量压入栈 |
… |
|
… |
aload |
vindex |
将位置为 vindex的对象引用局部变量压入栈 |
aload_x |
|
将位置为 x的对象引用局部变量压入栈 |
istore |
vindex |
从栈中弹出int值,将其存入局部变量表 vindex位置 |
istore _x |
|
从栈中弹出int值,将其存入局部变量表x位置 |
astore |
vindex |
从栈中弹出对象引用,将其存入局部变量表 vindex位置 |
astore _x |
|
从栈中弹出对象引用,将其存入局部变量表x位置 |
invokespecial |
|
调用特殊的一些方法,比如构造函数,类的私有方法,父类的方法。这些方法是静态类型绑定的,不会在调用时进行动态派发; |
invokevirtual |
|
虚函数调用,调用对象的实例方法,根据对象的实际类型进行派发,支持多态; |
invokestatic |
|
调用类的静态方法,这个也是静态绑定的 |
getstatic |
|
读取类的静态字段 |
getfield |
|
读取实例对象字段 |
if_acmpeq |
|
比较对象是否相等,真则跳转 |
if_acmpne |
|
比较对象是否不相等,真则跳转 |