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

l2d - Convert long to double
  opcode:  138 (0x8a)
  usage: l2d
  stack before: ..., value.word1, value.word2
stack after: ..., result.word1, result.word2
 
description:

The top two words of the operand stack must be a long. To execute the l2d instruction, the Java Virtual Machine pops the long value from the operand stack, converts the long to a double using the IEEE round-to-nearest mode, and pushes the double result.

l2f - Convert long to float
  opcode:  137 (0x89)
  usage: l2f
  stack before: ..., value.word1, value.word2
stack after: ..., result
 
description:

The top two words of the operand stack must be a long. To execute the l2f instruction, the Java Virtual Machine pops the long value from the operand stack, converts the long to a float using the IEEE round-to-nearest mode, and pushes the float result.

l2i - Convert long to int
  opcode:  136 (0x88)
  usage: l2i
  stack before: ..., value.word1, value.word2
stack after: ..., result
 
description:

The top two words of the operand stack must be a long. To execute the l2i instruction, the Java Virtual Machine pops long value from the operand stack, truncates the long to a int, and pushes the int result.

ladd - Add longs
  opcode:  97 (0x61)
  usage: ladd
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description: Long is represented on the stack as two words. The top four words on the stack must be two long values. The Java Virtual Machine pops two longs from the stack, adds them and pushes the result on the stack.

laload - Load long from array
  opcode:  47 (0x2f)
  usage: laload
  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 long array  and i must be an integer. As a result virtual machine pushes long value from index i of array arrayref on the stack.
exceptions: NullPointerException - arrayref is null
ArrayIndexOutOfBoundsException - i is not a legal array index

land - Perform boolean AND on longs
  opcode:  127 (0x7f)
  usage: land
  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 represent two longs: value1 and value2. To execute the ior instruction, the Java Virtual Machine pops value1 and value2, bitwise ANDs them, and pushes the float result on the stack.

lastore - Store into long array
  opcode:  80 (0x50)
  usage: lastore
  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 long array, i must be an integer and value must be a long.
exceptions: NullPointerException - arrayref is null
ArrayIndexOutOfBoundsException - i is not a legal array index
ArrayStoreException - value is not a long

lcmp - Compare longs
  opcode:  148 (0x94)
  usage: lcmp
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result
 
description: The top four words of the operand stack must be two longs, value1 and value2. To execute the lcmp instruction, the Java Virtual Machine pops value1 and value2 of the operand stack and compares one against the other. If value1 equals value2, The virtual machine pushes onto the operand stack int result 0. Else, if value1 is greater than value2, The virtual machine pushes onto the operand stack int result 1. Otherwise, if value1 is less than value2, The virtual machine pushes onto the operand stack int result -1.

lconst_0 - Push long constant 0
  opcode:  9 (0x9)
  usage: lconst_0
  stack before: ...
stack after: ..., <0-word1, <0-word2
 
description: The Java Virtual Machine pushes constant long 0 on the stack.

lconst_1 - Push long constant 1
  opcode:  10 (0xa)
  usage: lconst_1
  stack before: ...
stack after: ..., <1-word1, <1-word2
 
description: The Java Virtual Machine pushes constant long 1 on the stack.

ldc - Push item from constant pool
  opcode:  18 (0x12)
  usage: ldc constant
  stack before: ...
stack after: ..., constant
 
description: Pushes constant on the stack. Constant can be and int or float or String.

ldc_w - Push item from constant pool (wide index)
  opcode:  19 (0x13)
  usage: ldc_w constant
  stack before: ...
stack after: ..., constant.word1, constant.word2
 
description: Pushes constant float or int on stack as a double.

ldiv - Divide longs
  opcode:  109 (0x6d)
  usage: ldiv
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description: Long is represented on the stack as two words. The top four words on the stack must be two long values. The Java Virtual Machine pops two longs from the stack, divides them and pushes the result on the stack.

lload - Load long from local variable
  opcode:  22 (0x16)
  usage: lload index
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine loads value value from local variable index (unsigned 8-bit) and pushes it on the stack. The value stored in local variable index must be a long.

lload_0 - Load long from local variable 0
opcode:  30 (0x1e)
  usage: lload_0
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine loads value value from local variable 0 and pushes it on the stack. The value stored in local variable index must be a long.

lload_1 - Load long from local variable 1
  opcode:  31 (0x1f)
  usage: lload_1
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine loads value value from local variable 1 and pushes it on the stack. The value stored in local variable index must be a long.

lload_2 - Load long from local variable 2
  opcode:  32 (0x20)
  usage: lload_2
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine loads value value from local variable 2 and pushes it on the stack. The value stored in local variable index must be a long.

lload_3 - Load long from local variable 3
  opcode:  33 (0x21)
  usage: lload_3
  stack before: ...
stack after: ..., value.word1, value.word2
 
description: The Java Virtual Machine loads value value from local variable 3 and pushes it on the stack. The value stored in local variable index must be a long.

lmul - Multiply longs
  opcode:  105 (0x69)
  usage: lmul
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description: Long is represented on the stack as two words. The top four words on the stack must be two long values. The Java Virtual Machine pops two longs from the stack, multiplies them and pushes the result on the stack.

lneg - Negate long
  opcode:  117 (0x75)
  usage: lneg
  stack before: ..., value.word1, value.word2
stack after: ..., result.word1, result.word2
 
description: The two top words of the stack must represent a long. The Java Virtual Machine pops a long value from the stack, negates it and pushes result on the stack.

lookupswitch - Access jump table by key match and jump
  opcode:  171 (0xab)
  usage:
lookupswitch
   int1 : label1
   int2 : label2
   ...
   default : default_label 
  stack before: ..., index
stack after: ...
 
description: If index equals int1 jump to label1. Else, if index equals int2 jump to label2, etc... Otherwise jump to default_label.

lor - Perform boolean OR on longs
  opcode:  129 (0x81)
  usage: lor
  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 represent two longs: value1 and value2. To execute the ior instruction, the Java Virtual Machine pops value1 and value2, bitwise ORs them, and pushes the float result on the stack.

lrem - Calculate remainder of division of longs
  opcode:  113 (0x71)
  usage: lrem
  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 longs. To execute the lrem instruction, the Java Virtual Machine pops value1 and value2, calculates the remainder, and pushes the long result. The remainder equals value1 - (value1 / value2) * value2.

lreturn - Return long from method
  opcode:  173 (0xad)
  usage: lreturn
  stack before: ..., value.word1, value.word2
stack after: [empty]
 
description: dreturn must be invoked inside a method of return type being a long. It returns two top words from a stack (representing a long) and leaves the method.

lshl - Perform left shift on long
  opcode:  121 (0x79)
  usage: lshl
  stack before: ..., value1.word1, value1.word2, value2
stack after: ..., result.word1, result.word2
 
description: The top word of the operand stack, value2, must be an int. The next two words down must be a long, value1. To execute the lshl instruction, the Java Virtual Machine pops value1 and value2, shifts value1 left by the number of bits specified in the 6 lowest order bits of value2 (from 0 to 63 bit positions), and pushes the long result.

lshr - Perform arithmetic right shift on long
  opcode:  123 (0x7b)
  usage: lshr
  stack before: ..., value1.word1, value1.word2, value2
stack after: ..., result.word1, result.word2
 
description: The top word of the operand stack, value2, must be an int. The next two words down must be a long, value1. To execute the lshr instruction, the Java Virtual Machine pops value1 and value2, shifts value1 right with sign extension by the number of bits specified in the 6 lowest order bits of value2 (from 0 to 63 bit positions), and pushes the long result.

lstore - Store long into local variable
  opcode:  55 (0x37)
  usage: store index
  stack before: ..., value.word1, value.word2
stack after: ...
 
description: The instruction takes parameter index and value from the stack. Top two words on the stack must represent a long. Index must be an unsigned 8-bit number. As a result the Java Virtual Machine stores value into local variables index and index+1.

lstore_0 - Store long into local variable 0
  opcode:  63 (0x3f)
  usage: lstore_0
  stack before: ..., value.word1, value.word2
stack after: ...
 
description: Top two words on the stack must represent a long. The Java Virtual Machine stores value into local variables 0 and 1.

lstore_1 - Store long into local variable 1
  opcode:  64 (0x40)
  usage: lstore_1
  stack before: ..., value.word1, value.word2
stack after: ...
 
description: Top two words on the stack must represent a long. The Java Virtual Machine stores value into local variables 1 and 2.

lstore_2 - Store long into local variable 2
  opcode:  65 (0x41)
  usage: lstore_2
  stack before: ..., value.word1, value.word2
stack after: ...
 
description: Top two words on the stack must represent a long. The Java Virtual Machine stores value into local variables 2 and 3.

lstore_3 - Store long into local variable 3
  opcode:  66 (0x42)
  usage: lstore_3
  stack before: ..., value.word1, value.word2
stack after: ...
 
description: Top two words on the stack must represent a long. The Java Virtual Machine stores value into local variables 3 and 4.

lsub - Subtract longs
  opcode:  101 (0x65)
  usage: lsub
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description: Long is represented on the stack as two words. The top four words on the stack must be two long values. The Java Virtual Machine pops two longs from the stack, substracts them and pushes the result on the stack.

lushr - Perform logical right shift on long
  opcode:  125 (0x7d)
  usage: lushr
  stack before: ..., value1.word1, value1.word2, value2.word1, value2.word2
stack after: ..., result.word1, result.word2
 
description: The top word of the operand stack, value2, must be an int. The next two words down must be a long, value1. To execute the lushr instruction, the Java Virtual Machine pops value1 and value2, shifts value1 right with zero extension by the number of bits specified in the 6 lowest order bits of value2 (from 0 to 63 bit positions), and pushes the long result.

lxor - Perform boolean XOR on longs
  opcode:  131 (0x83)
  usage: lxor
  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 represent two longs: value1 and value2. To execute the ior instruction, the Java Virtual Machine pops value1 and value2, bitwise XORs them, and pushes the float result on the stack.