These instructions may alter the flow of the program.
| Instruction | Operands | Affected Flags |
|---|---|---|
| call | destination address | O/S/Z/A/C |
| This pushes what would be the next value for %eip onto the stack, and jumps to the destination address. Used for function calls. Alternatively, the destination address can be an asterisk followed by a register for an indirect function call. For example, call *%eax will call the function at the address in %eax. | ||
| int | I | O/S/Z/A/C |
| Causes an interrupt of the given number. This is usually used for system calls and other kernel interfaces. | ||
| Jcc | destination address | O/S/Z/A/C |
| Conditional branch. cc is the condition code. Jumps to the given address if the condition code is true (set from the previous instruction, probably a comparison). Otherwise, goes to the next instruction. The condition codes are:
| ||
| jmp | destination address | O/S/Z/A/C |
| An unconditional jump. This simply sets %eip to the destination address. Alternatively, the destination address can be an asterisk followed by a register for an indirect jump. For example, jmp *%eax will jump to the address in %eax. | ||
| ret | O/S/Z/A/C | |
| Pops a value off of the stack and then sets %eip to that value. Used to return from function calls. | ||