Based on Bill Verners' Inside the Java Virtual Machine, McGraw Hill Companies, 1997

d2f - Convert double to float
  opcode:  144 (0x90)
  usage: d2f
  stack before: ..., value.word1, value.word2
stack after: ..., result
 
description:

Double is represented as two words on the stack. To retrieve double value, the Java Virtual Machine pops two words from the stack. Next, double value is converted to float and the result is pushed on the stack. If double equals NaN, the result is also NaN. Else, if the absolute value of double value is too small to be represented as a float,  the float result is 0 of the same sign. Else, if double value is too large to be represented by a float, the result is infinity of the same sign. Otherwise, the virtual machine converts the double value to float zero using IEEE 754 round-to-nearest mode. Because not all double values are representable by a float, the conversion may result in a loss of magnitude and precision.

d2i - Convert double to int
  opcode:  142 (0x8e)
  usage: d2i
  stack before: ..., value.word1, value.word2
stack after: ..., result
 
description:

Double is represented as two words on the stack. To retrieve double value, the Java Virtual Machine pops two words from the stack. Next, double value is converted to an integer and the result is pushed on the stack. If double equals NaN, the result is zero. Else, if the double value is not a positive or negative infinity, the virtual machine rounds the value towards zero using IEEE 754 round-towards-zero mode. If the resulting integral value can be exactly represented by an int, the int result is that integral value. Otherwise, the magnitude of the double value is too great be represented in an int. If value is positive, the int result is the largest positive integer representable in an int. If value is negative, the int result is the smallest negative integer representable in an int.

d2l - Convert double to long
  opcode:  143 (0x8f)
  usage: d2l
  stack before: ..., value.word1, value.word2
stack after: ..., result.word1, result.word2
 
description:

Double is represented as two words on the stack. To retrieve double value, the Java Virtual Machine pops two words from the stack. Next, double value is converted to long and the result is pushed on the stack. If double equals NaN, the result is zero.. Else, if the double value is not a positive or negative infinity, the virtual machine rounds the value towards zero using IEEE 754 round-towards-zero mode. If the resulting integral value can be exactly represented by a long, the long result is that integral value. Otherwise, the magnitude of the double value is too great be represented in a long. If value is positive, the long result is the largest positive integer representable in a long. If value is negative, the long result is the smallest negative integer representable in an long.

dadd - Add doubles
  opcode:  99 (0x63)
  usage: dadd
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description:

Double is represented on the stack as two words. The top four words on the stack must be two double values. The Java Virtual Machine pops two doubles from the stack, adds them and pushes the result on the stack. The result produced by the dadd instruction is governed by the rules of IEEE 754 floating point arithmetic.

daload - Load double from array
  opcode:  49 (0x31)
  usage: daload
  stack before: ..., arrayref, index
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine takes two top words from the stack. Arrayref must a reference to a double array  and i must be an integer. As a result virtual machine pushes double value from index i of array arrayref on the stack.
exceptions: NullPointerException - arrayref is null
ArrayIndexOutOfBoundsException - i is not a legal array index

dastore - Store into double array
  opcode:  82 (0x52)
  usage: dastore
  stack before: ..., arrayref, index, value.word1, value.word2
stack after: ...
 
description: The Java Virtual Machine stores byte value in index i of array arrayref. Arrayref must be a double array, i must be an integer and value must be a double.
exceptions: NullPointerException - arrayref is null
ArrayIndexOutOfBoundsException - i is not a legal array index
ArrayStoreException - value is not a double

dcmpg - Compare doubles (1 on NaN)
  opcode:  152 (0x98)
  usage: dcmpg
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result
 
description:

Top four words of the stack must represent two doubles. Instruction pops value1 and value2 from the stack, compares them and pushes int result on the stack. If values are equal, the Java Virtual Machine pushes 0 on the stack. Else, if value1 is greater than value2, the virtual machine pushes 1 on the stack. Otherwhise, if value2 is greater than value1, the virtual machine pushes -1 on the stack. If either of the two values is a NaN, the Java Virtual Machine pushes 1 on the stack.

dcmpl - Compare doubles (-1 on NaN)
  opcode:  151 (0x97)
  usage: dcmpl
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result
 
description:

Top four words of the stack must be two doubles. Instruction pops value1 and value2 from the stack, compares them and pushes int result on the stack. If values are equal, the Java Virtual Machine pushes 0 on the stack. Else, if value1 is greater than value2, the virtual machine pushes 1 on the stack. Otherwhise, if value2 is greater than value1, the virtual machine pushes -1 on the stack. If either of the two values is a NaN, the Java Virtual Machine pushes -1 on the stack.

dconst_0 - Push double constant 0.0
  opcode:  14 (0xe)
  usage: dconst_0
  stack before: ...
stack after: ..., <0.0-word1, <0.0-word2
 
description:

The Java Virtual Machine pushes the double constant 0.0 onto the operand stack.

dconst_1 - Push double constant 1.0
  opcode:  15 (0xf)
  usage: dconst_1
  stack before: ...
stack after: ..., <1.0-word1, <1.0-word2
 
description:

The Java Virtual Machine pushes the double constant 1.0 onto the operand stack.

ddiv - Divide doubles
  opcode:  111 (0x6f)
  usage: ddiv
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description:

Four top words of the stack must be two doubles. The Java Virtual Machine pops two doubles from the stack, divides them and pushes double result on the stack.

dload - Load double from local variable
  opcode:  24 (0x18)
  usage: dload index
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine pushes on stack values from local variable index and local variable index+1.

dload_0 - Load double from local variable 0
  opcode:  38 (0x26)
  usage: dload_0
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine pushes on stack values from local variables 0 and 1.

dload_1 - Load double from local variable 1
  opcode:  39 (0x27)
  usage: dload_1
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine pushes on stack values from local variables 1 and 2.

dload_2 - Load double from local variable 2
  opcode:  40 (0x28)
  usage: dload_2
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine pushes on stack values from local variables 2 and 3.

dload_3 - Load double from local variable 3
  opcode:  41 (0x29)
  usage: dload_3
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine pushes on stack values from local variables 3 and 4.

dmul - Multiply doubles
  opcode:  107 (0x6b)
  usage: dmul
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description:

Four top words of the stack must represent two doubles. The Java Virtual Machine pops two doubles from the stack, multiplies them and pushes double result on the stack.

dneg - Negate double
  opcode:  119 (0x77)
  usage: dneg
  stack before: ..., value.word1, value.word2
stack after: ..., result.word1, result.word2
 
description:

Two top words of the stack must represent a double. The Java Virtual Machine pops a double from the stack, negates it and pushes result on the stack.

drem - Calculate remainder of division of doubles
  opcode:  115 (0x73)
  usage: drem
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description:

The top four words of the operand stack must be two doubles. To execute the drem instruction, the Java Virtual Machine pops value1 and value2, calculates the remainder, and pushes the double result. The remainder equals value1 - (value1 / value2) * value2.

dreturn - Return double from method
  opcode:  175 (0xaf)
  usage: dreturn
  stack before: ..., value.word1, value.word2
stack after: [empty]
 
description:

dreturn must be invoked inside a method of return type being a double. It returns two top words from a stack (representing a double) and leaves the method.

dstore - Store double into local variable
  opcode:  57 (0x39)
  usage: dstore, index
  stack before: ..., value.word1, value.word2
stack after: ...
 
description: The Java Virtual Machine stores two words from the stack into local variables index and index+1.

dstore_0 - Store double into local variable 0
  opcode:  71 (0x47)
  usage: dstore_0
  stack before: ..., value.word1, value.word2
stack after: ...
 
description: The Java Virtual Machine stores two words from the stack into local variables 0 and 1.

dstore_1 - Store double into local variable 1
  opcode:  72 (0x48)
  usage: dstore_1
  stack before: ..., value.word1, value.word2
stack after: ...
 
description:

The Java Virtual Machine stores two words from the stack into local variables 1 and 2.

dstore_2 - Store double into local variable 2
  opcode:  73 (0x49)
  usage: dstore_2
  stack before: ..., value.word1, value.word2
stack after: ...
 
description:

The Java Virtual Machine stores two words from the stack into local variables 2 and 3.

dstore_3 - Store double into local variable 3
  opcode:  74 (0x4a)
  usage: dstore_3
  stack before: ..., value.word1, value.word2
stack after: ...
 
description: The Java Virtual Machine stores two words from the stack into local variables 3 and 4.

dsub - Subtract doubles
  opcode:  103 (0x67)
  usage: dsub
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description:

The four top words of the operand stack must represent two doubles. The Java Virtual Machine pops two doubles from the stack, substracts them and pushes double result on the stack.

dup - Duplicate top stack word
  opcode:  89 (0x59)
  usage: dup
  stack before: ..., word
stack after: ..., word, word
 
description:

The Java Virtual Machine duplicates top word on the stack and pushes it on the stack. word must represent a single word value (cannot be double or long).

dup_x1 - Duplicate top stack word and put two down
  opcode:  90 (0x5a)
  usage: dup_x1
  stack before: ..., word2, word1
stack after: ..., word1, word2, word1
 
description:

The Java Virtual Machine duplicates top word on the stack and pushes it two words down. word1 and word2 must be single value words (cannot be double or long).

dup_x2 - Duplicate top stack word and put three down
  opcode:  91 (0x5b)
  usage: dup_x2
  stack before: ..., word3, word2, word1
stack after: ..., word1, word3, word2, word1
 
description:

The Java Virtual Machine duplicates top word on the stack and pushss it three words down. word1  must be a single value words (cannot be double or long). Words word2 and word3 must either be single words, or together represent a two word value.

dup2 - Duplicate top two stack words
  opcode:  92 (0x5c)
  usage: dup2
  stack before: ..., word2, word1
stack after: ..., word2, word1, word2, word1
 
description:

The Java Virtual Machine duplicates two top words on the stackword.Words word1 and word2 must either be single words, or together represent a two word value.

dup2_x1 - Duplicate top two stack words and put three down
  opcode:  93 (0x5d)
  usage: dup2_x1
  stack before: ..., word3, word2, word1
stack after: ..., word2, word1, word3, word2, word1
 
description:

The Java Virtual Machine duplicates two top words on the stackword.Words word1 and word2 must either be single words, or together represent a two word value. Word3 must be a single word value.

dup2_x2 - Duplicate top two stack words and put four down
  opcode:  94 (0x5e)
  usage: dup2_x2
  stack before: ..., word4, word3, word2, word1
stack after: ..., word2, word1, word4, word3, word2, word1
 
description:

The Java Virtual Machine duplicates two top words on the stackword.Words word1 and word2 must either be single words, or together represent a two word value. Words word3 and word4 must either be single words, or together represent a two word value.