汇编语言
Author

admin

PROLOG 和 EPILOG

所谓 prolog,就是指被调用方采用如下方式分配栈帧的过程。

push rbp
mov rbp, rsp
sub rsp, 16 * N

在 x64 指令集中,enter 指令可以做到与上者等价的效果,但实践中基本不用。StackOverflow 有关于此问题的详细解释。1

enter 16 * N, 0

Epilog 则指从当前函数返回时清理栈帧的区域。

mov rsp, rbp
pop rbp
ret

对应地,leave 指令也可以做到清空栈帧的效果,实践中也基本不用。