「Java」- 虚拟机指令

ldc 0x12

将int, float或String型常量值,从常量池中推至栈顶。

Operand Stack
… →
…, value

ldc_w 0x13

将int, float或String型常量值从常量池中推至栈顶(宽索引)

ldc2_w 0x14

将long或double型常量值从常量池中推至栈顶(宽索引)

lstore 0x37

将栈顶long型数值存入指定本地变量

lstore_<n>

将栈顶long型数值存入第一个本地变量

Forms

lstore_0 = 63 (0x3f)
lstore_1 = 64 (0x40)
lstore_2 = 65 (0x41)
lstore_3 = 66 (0x42)

Operand Stack

…, value →

lconst_<l>

将long型(0)推至栈顶

Forms

lconst_0 = 9 (0x9)
lconst_1 = 10 (0xa)

Operand Stack

… →
…, <l>

lload 0x16

将指定的long型本地变量推至栈顶

lload_<n>

将第一个long型本地变量推至栈顶

Forms

lload_0 = 30 (0x1e)
lload_1 = 31 (0x1f)
lload_2 = 32 (0x20)
lload_3 = 33 (0x21)

Operand Stack

… →
…, value

l2i 0x88

将栈顶long型数值强制转换成int型数值并将结果压入栈顶

l2f 0x89

将栈顶long型数值强制转换成float型数值并将结果压入栈顶

l2d 0x8a

将栈顶long型数值强制转换成double型数值并将结果压入栈顶

laload 0x2f

将long型数组指定索引的值推至栈顶

lastore 0x50

将栈顶long型数值存入指定数组的指定索引位置

lreturn 0xad

从当前方法返回long

lookupswitch 0xab

用于switch条件跳转,case值不连续(可变长度指令)

lcmp 0x94

比较栈顶两long型数值大小,并将结果(1,0,-1)压入栈顶

lor 0x81

将栈顶两long型数值作“按位或”并将结果压入栈顶

lxor 0x83

将栈顶两long型数值作“按位异或”并将结果压入栈顶

land 0x7f

将栈顶两long型数值作“按位与”并将结果压入栈顶

lushr 0x7d

将long型数值右(无符号)移位指定位数并将结果压入栈顶

lshr 0x7b

将long型数值右(符号)移位指定位数并将结果压入栈顶

lneg 0x75

将栈顶long型数值取负并将结果压入栈顶

lshl 0x79

将long型数值左移位指定位数并将结果压入栈顶

lrem 0x71

将栈顶两long型数值作取模运算并将结果压入栈顶

ladd 0x61

将栈顶两long型数值相加并将结果压入栈顶

lsub 0x65

将栈顶两long型数值相减并将结果压入栈顶

lmul 0x69

将栈顶两long型数值相乘并将结果压入栈顶

ldiv 0x6d

将栈顶两long型数值相除并将结果压入栈顶