函数栈帧创建

Posted Jack Chao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数栈帧创建相关的知识,希望对你有一定的参考价值。

我们在编译代码的时候是不是真的有去想过代码是怎么运行的吗?在代码的最深处到底有什么秘密,就让我来为你们来找找吧。
在了解这些内容之前,我们先要了解什么是栈。
栈就像是手枪的弹夹,

里面的子弹都是先进后出的对吧,栈也是一样的。
之后我们要了解一下他是怎么运行的。
CPU中的通用寄存器有:EAX EBX ECX EDX。
栈顶通常是ESP寄存器
栈底通常是EBP寄存器
当我们运行一行代码的时候汇编就会用到一些语句来运行
我们先来看一个很简单的代码

#include<stdio.h>
int Add(int x , int y)
{
	int z = 0;
	z = x + y;
	return z;
}
int main()
{
	int a = 10;
	int b = 20;
	int c = Add(a,b);
	printf("%d" , c);
	return 0;
}

我们先来看一张图片

这张图片就结合了图像进行解释。里面有各种解释,各位大佬就看图理解。小弟先行告退了。

以上是关于函数栈帧创建的主要内容,如果未能解决你的问题,请参考以下文章

图解C/C++语言底层:函数调用过程之函数栈帧的创建和销毁(上)

图解C/C++语言底层:函数调用过程之函数栈帧的创建和销毁(上)

函数栈帧创建

函数栈帧创建

函数栈帧创建

函数栈帧创建