Я понял, что не правильно понял инструкции "call", "pop" и "ret". Теперь я думаю, что понимаю это.
Процедуры и стеки вызовов
https://courses.cs.washington.edu/courses/cse351/12au/lecture-slides/07-procedures.pdf
1 перед вызовом f ():
rax 0x55ce8dc245fa 94345629943290
rbp 0x7fff30b035b0 0x7fff30b035b0
rsp 0x7fff30b035b0 0x7fff30b035b0
rip 0x55ce8dc245fe 0x55ce8dc245fe <main+4>
--------------|--------------
ADDRESS |VALUE
--------------|--------------
0x7fff30b035b0| <= rsp, rbp
--------------|--------------
2 начать вызов f ():
rax 0x0 0
rbp 0x7fff30b035b0 0x7fff30b035b0
rsp 0x7fff30b035a8 0x7fff30b035a8
rip 0x55ce8dc2460a 0x55ce8dc2460a <f>
--------------|--------------
ADDRESS |VALUE
--------------|--------------
0x7fff30b035b0| <= rbp
--------------|--------------
0x7fff30b035a8|0x55ce8dc245fe <= rsp
--------------|--------------
3 push% rbp:
rax 0x0 0
rbp 0x7fff30b035b0 0x7fff30b035b0
rsp 0x7fff30b035a0 0x7fff30b035a0
rip 0x55ce8dc2460e 0x55ce8dc2460e <f+4>
--------------|--------------
ADDRESS |VALUE
--------------|--------------
0x7fff30b035b0| <= rbp
--------------|--------------
0x7fff30b035a8|0x55ce8dc245fe
--------------|--------------
0x7fff30b035a0|0x7fff30b035b0 <= rsp
--------------|--------------
4 mov% rsp,% rbp:
rax 0x0 0
rbp 0x7fff30b035a0 0x7fff30b035a0
rsp 0x7fff30b035a0 0x7fff30b035a0
rip 0x55ce8dc2460e 0x55ce8dc2460e <f+4>
--------------|--------------
ADDRESS |VALUE
--------------|--------------
0x7fff30b035b0|
--------------|--------------
0x7fff30b035a8|0x55ce8dc245fe
--------------|--------------
0x7fff30b035a0|0x7fff30b035b0 <= rsp, rbp
--------------|--------------
5 mov $ 1,% eax:
rax 0x1 1
rbp 0x7fff30b035a0 0x7fff30b035a0
rsp 0x7fff30b035a0 0x7fff30b035a0
rip 0x55ce8dc24613 0x55ce8dc24613 <f+9>
--------------|--------------
ADDRESS |VALUE
--------------|--------------
0x7fff30b035b0|
--------------|--------------
0x7fff30b035a8|0x55ce8dc245fe
--------------|--------------
0x7fff30b035a0|0x7fff30b035b0 <= rsp, rbp
--------------|--------------
6 отпуск: (mov% rbp% rsp, pop%rbp)
rax 0x1 1
rbp 0x7fff30b035b0 0x7fff30b035b0
rsp 0x7fff30b035a8 0x7fff30b035a8
rip 0x55ce8dc24614 0x55ce8dc24614 <f+10>
--------------|--------------
ADDRESS |VALUE
--------------|--------------
0x7fff30b035b0| <= rbp
--------------|--------------
0x7fff30b035a8|0x55ce8dc245fe <= rsp
--------------|--------------
7 рет:
rax 0x1 1
rbp 0x7fff30b035b0 0x7fff30b035b0
rsp 0x7fff30b035b0 0x7fff30b035b0
rip 0x55ce8dc24608 0x55ce8dc24608 <main+14>
--------------|--------------
ADDRESS |VALUE
--------------|--------------
0x7fff30b035b0| <= rbp, rsp
--------------|--------------