What is the function of the push / pop instructions used on registers in x86 assembly?

Ars emble picture Ars emble · Jan 3, 2011 · Viewed 301.8k times · Source

When reading about assembler I often come across people writing that they push a certain register of the processor and pop it again later to restore it's previous state.

  • How can you push a register? Where is it pushed on? Why is this needed?
  • Does this boil down to a single processor instruction or is it more complex?

Answer

Linus Kleen picture Linus Kleen · Jan 3, 2011

pushing a value (not necessarily stored in a register) means writing it to the stack.

popping means restoring whatever is on top of the stack into a register. Those are basic instructions:

push 0xdeadbeef      ; push a value to the stack
pop eax              ; eax is now 0xdeadbeef

; swap contents of registers
push eax
mov eax, ebx
pop ebx