上图是CS:APP中的图,我用processon画的,折腾后面上图2中的栈结构真的是麻烦,书里的图文不符,只能根据这个汇编代码重画一下。
后面又在 15213 的课件中找到一张图,在我自己的图上栈帧的大小表示上又和课件的图有出入,拿 sum() 来看,%ebp 入栈后,栈指针继续分配栈上内存,向地址减小 0x50,课件中的栈帧包含了那个 %ebp,而我自己做的图单独列出了,这样看应该是课件中的图准确点,一个栈帧应该包含当前栈的所有信息(栈上内存 + 栈基地址 + 返回地址),不过processon上的图么有了,这里就插个眼再传个课件的图吧。
)
参考Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic Architecture, Intel 开发手册
15213, 计算机系统导论课程
CS:APP 3e, 深入理解计算机系统