Java Virtual Machine (Java Series)

prev next contents
if_icmple

jump if one integer is less than or equal to another

Jasmin Syntax

if_icmple <label> <label> is a label name. To define the location of the label, use the <label> name followed by a colon:

<label>: <label> then becomes associated the address of the following instruction. Labels can only be assigned one location in a method. On the other hand, a single <label> can be the target of multiple branch instructions.

Stack

Before

After
value1 ...
value2
Description

if_icmple pops the top two ints off the stack and compares them. If value2 is less than or equal to value1, execution branches to the address (pc + branchoffset), where pc is the address of the if_icmple opcode in the bytecode and branchoffset is a 16-bit signed integer parameter following the if_icmple opcode in the bytecode. If value2 is greater than value1, execution continues at the next instruction.

If you are using Jasmin, branchoffset is computed for you from the address of <label>.

Example

iload_1 ; push the int value in local variable 1 onto the stack bipush 2 ; push the int 2 onto the stack if_icmple Label ; if the value of local variable 1 is <= 2, jump to Label return ; return if local variable 1 is greater than 2 Label: ; execution continues here if local variable 1 is less than or equal to 2... Bytecode

Type

Description
u1 if_icmple opcode = 0xA4 (164)
s2 branchoffset

See Also

if_icmpeq, if_icmpne, if_icmplt, if_icmpgt, if_icmpge

Notes

Addresses are measured in bytes from the start of the bytecode (i.e. address 0 is the first byte in the bytecode of the currently executing method).


prev next contents
Java Virtual Machine, by Jon Meyer and Troy Downing, O'Reilly Associates

Категории