从c语言函数调用看程序的栈机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从c语言函数调用看程序的栈机制相关的知识,希望对你有一定的参考价值。

  

预备知识:

①栈:计算机系统中是指一块采用栈式管理的内存区域,栈的增长方向是从高地址空间向低地址空间增长

②汇编指令call:将返回地址入栈,并跳转到被调用过程的起始处

③汇编指令ret:从栈中弹出返回地址,并跳转到这个位置

  IA32(x86)通过程序栈来支持过程调用。机器用栈来传递过程参数(函数参数)、存储返回信息、保存寄存器。为单个过程分配的那部分栈称为栈帧。下图描绘了栈帧的通用结构。栈帧的最顶端以两个指针界定,寄存器%ebp为帧指针,%esp为栈指针。%ebp指向栈帧的开始处,%esp指向栈顶元素。

技术分享

 

以上是关于从c语言函数调用看程序的栈机制的主要内容,如果未能解决你的问题,请参考以下文章

函数调用时的栈帧变化

C语言函数栈帧的创建和销毁,以简单函数的调用来进行详细刨析

在C语言中,定义一个函数的形参和实参之间具体是如何进行参数传递的?

C语言函数调用及栈帧结构

C++函数调用栈分布详解

函数调用机制