「Java」- 虚拟机指令

dload 0x18

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

dload_<n>

第n+1个double型本地变量推至栈顶

Forms

dload_0 = 38 (0x26)
dload_1 = 39 (0x27)
dload_2 = 40 (0x28)
dload_3 = 41 (0x29)

Operand Stack

… →
…, value

dup 0x59

复制栈顶数值(数值不能是long或double类型的),并将复制值压入栈顶

dup_x1 0x5a

复制栈顶数值(数值不能是long或double类型的),并将复制值压入栈顶的两个值下面

Operand Stack

…, value2, value1 →
…, value1, value2, value1

dup_x2 0x5b

复制栈顶数值(数值不能是long或double类型的)并将三个(或两个)复制值压入栈顶

dup2 0x5c

复制栈顶一个(long或double类型的)或两个(其它)数值并将复制值压入栈顶

dup2_x1 0x5d

复制栈顶数值(long或double类型的)并将两个复制值压入栈顶

dup2_x2 0x5e

复制栈顶数值(long或double类型的)并将三个(或两个)复制值压入栈顶

d2i 0x8e

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

d2l 0x8f

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

d2f 0x90

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

daload 0x31

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

dstore 0x39

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

dstore_<n> 0x47

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

Forms

dstore_0 = 71 (0x47)
dstore_1 = 72 (0x48)
dstore_2 = 73 (0x49)
dstore_3 = 74 (0x4a)

Operand Stack

…, value →

dastore 0x52

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

dreturn 0xaf

从当前方法返回double

dcmpl 0x97

比较栈顶两double型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为NaN时,将-1压入栈顶

dcmpg 0x98

比较栈顶两double型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为NaN时,将1压入栈顶

drem 0x73

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

dneg 0x77

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

dadd 0x63

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

dsub 0x67

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

dmul 0x6b

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

ddiv 0x6f

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

dconst_<d>

将double型(0)推至栈顶

Forms

dconst_0 = 14 (0xe)
dconst_1 = 15 (0xf)

Operand Stack

… →
…, <d>