29.3.2. x86 PUSH and POP instructions

push %rax is basically equivalent to:

sub $8, %rsp
mov %rax, (%rsp)

and pop %rax:

mov (%rsp), %rax
add $8, %rsp