[C语言]函数调用:栈帧的生长 ebp(取参数、局部变量) es

2020-05-27  本文已影响0人  AkuRinbu

资料来源

第 19 章 汇编与C之间的关系 1. 函数调用
《 Linux C编程一站式学习》

https://akaedu.github.io/book/ch19s01.html

主要心得

1、回忆一下这三个寄存器

eip esp ebp

2、函数的调用 main -> foo -> bar

int bar(int c, int d)
{
    int e = c + d;
    return e;
}

int foo(int a, int b)
{
    return bar(a, b);
}

int main(void)
{
    foo(2, 3);
    return 0;
}

2、大致看一眼栈的生长情况,栈随着函数调用的深入 从上往下生长

压栈操作、取传入参数和局部变量.png

3、完整的栈生长过程 (函数调用过程) 1->2->3->4

函数调用.png

4、栈帧的串连

栈帧的串连.png
上一篇下一篇

猜你喜欢

热点阅读