汇编语言
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
指令也可以做到清空栈帧的效果,实践中也基本不用。