| ifeq = 153 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value => ...value must be an integer. It is popped from the stack. If value is zero, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
ifeq.
| ifnull = 198 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value => ...value must be a reference to an object. It is popped from the stack. If value is
null, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the ifnull.
| iflt = 155 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value => ...value must be an integer. It is popped from the stack. If value is less than zero, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
iflt.
| ifle = 158 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value => ...value must be an integer. It is popped from the stack. If value is less than or equal to zero, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
ifle.
| ifne = 154 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value => ...value must be an integer. It is popped from the stack. If value is not equal to zero, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
ifne.
| ifnonnull = 199 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value => ...value must be a reference to an object. It is popped from the stack. If value is not
null, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the ifnonnull.
| ifgt = 157 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value => ...value must be an integer. It is popped from the stack. If value is greater than zero, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
ifgt.
| ifge = 156 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value => ...value must be an integer. It is popped from the stack. If value is greater than or equal to zero, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
ifge.
| if_icmpeq = 159 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value1, value2 => ...value1 and value2 must be integers. They are both popped from the stack. If value1 is equal to value2, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
if_icmpeq.
| if_icmpne = 160 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value1, value2 => ...value1 and value2 must be integers. They are both popped from the stack. If value1 is not equal to value2, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
if_icmpne.
| if_icmplt = 161 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value1, value2 => ...value1 and value2 must be integers. They are both popped from the stack. If value1 is less than value2, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
if_icmplt.
| if_icmpgt = 163 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value1, value2 => ...value1 and value2 must be integers. They are both popped from the stack. If value1 is greater than value2, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
if_icmpgt.
| if_icmple = 164 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value1, value2 => ...value1 and value2 must be integers. They are both popped from the stack. If value1 is less than or equal to value2, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
if_icmple.
| if_icmpge = 162 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value1, value2 => ...value1 and value2 must be integers. They are both popped from the stack. If value1 is greater than or equal to value2, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
if_icmpge.
| lcmp = 148 |
Stack: ..., value1value1 and value2 must be long integers. They are both popped from the stack and compared. If value1 is greater than value2, the integer value 1 is pushed onto the stack. If value1 is equal to value2, the value 0 is pushed onto the stack. If value1 is less than value2, the value -1 is pushed onto the stack.-word1, value1-word2, value2-word1, value2-word1=> ..., result
| fcmpl = 149 |
Stack: ..., value1, value2 => ..., resultvalue1 and value2 must be single-precision floating point numbers. They are both popped from the stack and compared. If value1 is greater than value2, the integer value 1 is pushed onto the stack. If value1 is equal to value2, the value 0 is pushed onto the stack. If value1 is less than value2, the value -1 is pushed onto the stack.
If either value1 or value2 is NaN, the value -1 is pushed onto the stack.
| fcmpg = 150 |
Stack: ..., value1, value2 => ..., resultvalue1 and value2 must be single-precision floating point numbers. They are both popped from the stack and compared. If value1 is greater than value2, the integer value 1 is pushed onto the stack. If value1 is equal to value2, the value 0 is pushed onto the stack. If value1 is less than value2, the value -1 is pushed onto the stack.
If either value1 or value2 is NaN, the value 1 is pushed onto the stack.
| dcmpl = 151 |
Stack: ..., value1value1 and value2 must be double-precision floating point numbers. They are both popped from the stack and compared. If value1 is greater than value2, the integer value 1 is pushed onto the stack. If value1 is equal to value2, the value 0 is pushed onto the stack. If value1 is less than value2, the value -1 is pushed onto the stack.-word1, value1-word2, value2-word1, value2-word1=> ..., result
If either value1 or value2 is NaN, the value -1 is pushed onto the stack.
| dcmpg = 152 |
Stack: ..., value1value1 and value2 must be double-precision floating point numbers. They are both popped from the stack and compared. If value1 is greater than value2, the integer value 1 is pushed onto the stack. If value1 is equal to value2, the value 0 is pushed onto the stack. If value1 is less than value2, the value -1 is pushed onto the stack.-word1, value1-word2, value2-word1, value2-word1=> ..., result
If either value1 or value2 is NaN, the value 1 is pushed onto the stack.
| if_acmpeq = 165 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value1, value2 => ...value1 and value2 must be references to objects. They are both popped from the stack. If the objects refrerenced are not the same, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the Address of this instruction. Otherwise execution proceeds at the instruction following the
if_acmpeq.
| if_acmpne = 166 |
| branchbyte1 |
| branchbyte2 |
Stack: ..., value1, value2 => ...value1 and value2 must be references to objects. They are both popped from the stack. If the objecs referenced are not the same, branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction. Otherwise execution proceeds at the instruction following the
if_acmpne.
| goto = 167 |
| branchbyte1 |
| branchbyte2 |
Stack: no changebranchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. Execution proceeds at that offset from the address of this instruction.
| goto_w = 200 |
| branchbyte1 |
| branchbyte2 |
| branchbyte3 |
| branchbyte4 |
Stack: no changebranchbyte1, branchbyte2, branchbyte3, and branchbyte4 are used to construct a signed 32-bit offset. Execution proceeds at that offset from the address of this instruction.
| jsr = 168 |
| branchbyte1 |
| branchbyte2 |
Stack: ... => ..., return-addressbranchbyte1 and branchbyte2 are used to construct a signed 16-bit offset. The address of the instruction immediately following the
jsr is pushed onto the stack. Execution proceeds at the offset from the address of this instruction.
Note: The jsr instruction is used in the implementation of Java's finally keyword.
| jsr_w = 201 |
| branchbyte1 |
| branchbyte2 |
| branchbyte3 |
| branchbyte4 |
Stack: ... => ..., return-addressbranchbyte1, branchbyte2, branchbyte3, and branchbyte4 are used to construct a signed 32-bit offset. The address of the instruction immediately following the
jsr_w is pushed onto the stack. Execution proceeds at the offset from the address of this instruction.
| ret = 169 |
| vindex |
Stack: no changeLocal variable vindex in the current Java frame must contain a return address. The contents of the local variable are written into the pc.
Note that jsr pushes the address onto the stack, and ret gets it out of a local variable. This asymmetry is intentional.
Note: The ret instruction is used in the implementation of Java's finally keyword.
ret_w = 209 |
| vindexbyte1 |
| vindexbyte2 |
Stack: no changevindexbyte1 and vindexbyte2 are assembled into an unsigned 16-bit index to a local variable in the current Java frame. That local variable must contain a return address. The contents of the local variable are written into the pc. See the
ret instruction for more information.