This is the last important set of instructions to learn. These instructions are related to branching and conditional jumps. These instructions are not so different from the assembly languages either, but they depend on the stack values for comparing and branching:
call | Calls a method or a static method of a class |
callvirt | Calls a method of an object (the object reference needs to be pushed to the stack earlier) |
ret | Return from a method |
jmp | Exit the current method and jump to a specific method (given the ID of that method) |
beq and bne | Branch if equal and branch if not equal (given the line number of the target instruction to branch to) |
blt and ble | Branch if lower and branch if lower or equal |
bgt and bge | Branch if greater and branch if greater or equal |
brfalse | Branch if the result is False (other aliases include brzero and brnull) |
brtrue | Branch if the result is True (other aliases include brinst) |
br (br.s) | Branch to target given the line number... |