The following is a subset of gcc-supported Pentium instructions. There is a larger list on page 361 of our text.
If an instruction below ends with a *, then the true instruction name ends with a l, w, or b depending on the size of its operands. Here's the rule:
Instructions that shuffle data around.
| Instruction | Description | Example(s) |
| mov* src, dest | Move a value from memory to/from a register
dest = src |
movl $17, %eax |
| xchg* src, dest | Exchange values
dest = src src = dest |
|
| push* src | Push a value on the stack
mem[stack] = src decrease %esp |
pushl %edx |
| pop* dest | Pop a value from the stack
dest = mem[stack] increase %esp |
pop %ebp |
For the instructions below, * can be substituted with l, w, or b depending on the size of your operands.
| Instruction | Description | Example(s) |
| add* src, dest | Add
dest = dest + src |
addl $4, %esp |
| sub* src, dest | Subtract
dest = dest - src |
subl $8, %esp |
| imul* src, dest | Integer multiply
dest = dest * src |
|
| idiv* src, dest | Integer division
dest = dest / src |
|
| inc* dest | Increment
dest++ |
|
| dec* dest | Decrement
dest-- |
These instructions perform a bitwise Boolean operations.
| Instruction | Description | Example(s) |
| and* src, dest | Boolean and
dest = dest AND src |
|
| or* src, dest | Boolean or
dest = dest OR src |
|
| xor* src, dest | Boolean exclusive-or
dest = dest XOR src |
|
| not* dest | Boolean inversion
dest = NOT dest |
These instructions simulate subtracting the source from the destination and set the flags in the eflags register.
| Instruction | Description | Example(s) |
| cmp* src, dest | Compare two values
dest - src ==> set eflags reg |
|
| jmp addr | Unconditionally jump to an address | |
| jz addr | Jump if eflags is "zero" | |
| jnz addr | Jump if eflags is "not zero" | |
| je addr | Jump is eflags is "equal" | |
| jne addr | Jump if eflags is "not equal" | |
| jl addr | Jump if eflags is "less than" | |
| jle addr | Jump if eflags is "less than or equal" | |
| jg addr | Jump if eflags is "greater than" | |
| jge addr | Jump if eflags is "greater than or equal" |
Instructions related to handling function calls.
| Instruction | Description | Example(s) |
| call func | Call function; pushes return address onto stack | call _printf |
| ret | Return from function; pops the return address that must be on the stack | ret |
| leave | Prepares for ret instruction; equivalent to
movl%ebp, %esp popl %ebp |
leave
ret |