These instructions perform little, if any computation. Instead they are mostly used for moving data from one place to another.
Instruction | Operands | Affected Flags |
---|---|---|
movl | I/R/M, I/R/M | O/S/Z/A/C |
This copies a word of data from one location to another. movl %eax, %ebx copies the contents of %eax to %ebx | ||
movb | I/R/M, I/R/M | O/S/Z/A/C |
Same as movl, but operates on individual bytes. | ||
leal | M, I/R/M | O/S/Z/A/C |
This takes a memory location given in the standard format, and, instead of loading the contents of the memory location, loads the computed address. For example, leal 5 (%ebp, %ecx, 1), %eax loads the address computed by 5 + %ebp + 1*%ecx and stores that in %eax | ||
popl | R/M | O/S/Z/A/C |
Pops the top of the stack into the given location. This is equivalent to performing movl (%esp), R/M followed by addl $4, %esp.popfl is a variant which pops the top of the stack into the %eflags register. | ||
pushl | I/R/M | O/S/Z/A/C |
Pushes the given value onto the stack. This is the equivalent to performing subl $4, %esp followed by movl I/R/M, (%esp).pushfl is a variant which pushes the current contents of the %eflags register onto the top of the stack. | ||
xchgl | R/M, R/M | O/S/Z/A/C |
Exchange the values of the given operands. |