dstore <varnum>
or
wide
dstore <varnum>
In
the first form, <varnum> is an unsigned integer in the range 0 to 0xFF.
In the second (wide) form, <varnum> is an unsigned integer in the range 0
to 0xFFFE.
Stack
Before
Description
After
doube-word1
...
double-word2
...
dstore pops a two-word double-precision float off the operand stack and stores it in a local variable. It takes a single parameter, <varnum>, an unsigned integer indicating which local variable to use.
Since double-precision floats are 64-bits wide, and each local variable can only hold up to 32 bits, Java uses two consecutive local variables, <varnum> and <varnum> + 1 to store a double. So dstore <varnum> actually modifies the values of both <varnum> (which is set to double-word1) and <varnum> + 1 (which is set to double-word2).
Both <varnum> and <varnum> + 1 must be valid local variable numbers in the current frame.
Example
ldc2_w 10.0 ; push the double 10.0 onto the stack dstore 3 ; pop 10.0 off of the stack and store it in local variables 3 and 4Bytecode
For local variables in the range 0-255, use:
Type
|
Description
|
|
u1
|
dstore
opcode = 0x39 (57)
|
|
u1
|
<varnum>
|
Type
|
Description
|
| u1
|
wide
opcode = 0xC4 (196)
|
|
u1
|
dstore
opcode = 0x39 (57)
|
|
u2
|
<varnum>
|
lstore, fstore, istore, astore, wide