字符含义
i代表int类型的数据
l代表long类型的数据
s代表short类型的数据
b代表byte类型的数据
c代表char类型的数据
f代表float类型的数据
d代表double类型的数据
a代表reference类型的数据
load
将一个本地变量加载到操作数栈
iload、lload、fload、dload、aload
store
将一个数值从操作数栈存储到局部变量表的指令
istore、lstore、fstore、dstore、astore
iconst等
将一个常量加载到操作数栈的指令
bipush、sipush、idc、idc_w、ldc2_w、aconst_null、iconst_ml
iconst_<i>、iconst_<l>、iconst_<f>、iconst_<d>
iconst
当int取值-1~5时,JVM采用iconst指令将常量压入栈中
int 取值 0~5 时,JVM采用 iconst_0、iconst_1、iconst_2、iconst_3、iconst_4、iconst_5指令将常量压入栈中;
取值-1时,采用iconst_m1指令将常量压入栈中
算术指令
加法
iadd、 ladd、 fadd、 dadd
减法
isub、lsub、fsub、dsub
乘法
imul、lmul、fmul、dmul
除法
idiv、ldiv、fdiv、ddiv
求余
irem、lrem、frem、drem、
求负值
ineg、lneg、fneg、dneg
移位指令
ishl、ishr、iushr、ishl、lshr、lushr
按位或指令
ior、lor
按位与指令
iand、land
按位异或指令
ixor、lxor
局部变量自增
iinc
比较指令
dcmpg、dcmpl、fcmpg、fcmpl、lcmp
ldc
# 从运行时常量池提取数据并压入操作数栈
ldc
dup
# 复制操作数栈栈顶的值,并插入到栈顶
# Duplicate the top operand stack value
dup
invoke
invokespecial
# 调用实例初始化方法比如<init>方法
invokespecial