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. |