https://zhuanlan.zhihu.com/p/656740329 在 x86-64 架构中,rbp 和 rsp 寄存器分别是栈帧基址指针( Base Pointer )和栈指针( Stack Pointer )。 看完了这篇文章,完全搞懂了函数调用过程中,rbp 和 rsp 的使用情况。 但是还是有一点不太理解,就是假如 CPU 只设计 rsp 可以吗?从我简单来看,好像也是可以够用的啊。我总结一下,无外乎是这些: 函数使用过程中,减 rsp ,用来放局部变量调用函数瞬间,硬件自动减 rsp ,用来放 return Address下一个函数,继续减 rsp ,用来放局部变量以此类推 返回过程: 如果是“减 rsp ,用来放局部变量”,那么直接加 rsp ,就回收了栈空间。如果是“硬件自动减 rsp ,用来放 return Address”,那么 pop 到 pc 即可( x86 里,ret 指令就是这个效果) 那从上面分析来看,只有 rsp ,好像也能完成函数调用的工作啊?