当前位置: 首页 > news >正文

西安高端网站制作公司哪家好百度商家平台登录

西安高端网站制作公司哪家好,百度商家平台登录,wordpress 分享 点赞,南昌网站建设公司资讯【手把手带你搞定】函数栈帧的创建和销毁 栈帧寄存器一些调试准备调试过程相信在前期C语言的学习的时候,大家一定都有下面这些困惑。 那么今天我们用这篇文章一次性解决以下所有问题: 局部变量是怎么创建的?为什么局部变量的值是随机值?函数是怎么传参的?传参的顺序是怎样…

【手把手带你搞定】函数栈帧的创建和销毁

  • 栈帧
  • 寄存器
  • 一些调试准备
  • 调试过程

相信在前期C语言的学习的时候,大家一定都有下面这些困惑。

那么今天我们用这篇文章一次性解决以下所有问题:

  • 局部变量是怎么创建的?
  • 为什么局部变量的值是随机值?
  • 函数是怎么传参的?
  • 传参的顺序是怎样的?
  • 形参和实参是什么关系?
  • 函数调用是怎么做的?
  • 函数调用结束后怎么返回的?

其实这些问题都离不开一个关键:

函数栈帧的创建和销毁,因为局部变量和函数的调用都是在栈区上创建的。

所以,

== 弄明白函数栈帧的创建和销毁 = 修炼了自己的内功 ==

不仅一次性解决上面的所有问题,而且后期学习更多知识也能更快更好吸收。

注意:在不同的编译器下,函数调用的过程中栈帧的创建是略有差异的,但是大体的逻辑是一样的。

今天我们还是在VS2019的环境下进行学习和观察。

当然,这里推荐使用VS2013的版本进行观察,因为越高级的版本,编译器内部的优化越多,则后台的操作就会越复杂,越不利于我们把函数栈帧的创建与销毁这一过程抽离出来。(后面你就知道了……)

所以,以下如果有一些地方是在VS2019中看不到的,我会把在VS2013中的结果告诉大家作补充;或者有一些地方VS2019比VS2013复杂的地方,我就简单带过啦~

栈帧

什么是栈帧?
在这里插入图片描述

寄存器

什么是寄存器?
在这里插入图片描述
在编译器中,我们经常可以见到下面这些寄存器:

eax、ebx、ecx、edx、ebp、esp

下面,我们要重点关注的是ebp、esp这2个寄存器。

在函数栈帧中,ebp、esp这2个寄存器中存放的是地址,而这两个地址就是用来维护函数栈帧的。

首先,我们知道,每一次函数调用时,程序都要在栈区中为这个函数开辟一块空间。而ebp和bsp就是用来维护这块空间的。

我们用一段代码来举例:

在这里插入图片描述
那么在栈区中,程序就为main函数开辟了一块空间,这块空间就是main函数的函数栈帧。

而寄存器ebp中的地址始终指向当前正在调用的函数的栈帧的底部

寄存器esp则始终指向函数栈帧的顶部

在这里插入图片描述

从以上,我们大概可以清楚esp和ebp是其实就是用来划定当前程序调用的函数的栈帧范围的。

当前程序在调用哪个函数,esp和ebp就分别指向这个函数栈帧的顶部和底部。

所以他们又分别被称为栈顶指针和栈底指针。

当程序调用新的函数,需要开辟新的空间时,就会通过esp和ebp的向上移动来使用新的空间。

在这里插入图片描述

一些调试准备

下面我们通过上面这段程序的代码来进行了解。

首先我们进入调试,打开调试窗口中的调用堆栈。

在这里插入图片描述
在这里插入图片描述

其实,在C语言中,main函数是程序执行的入口,所以,在实行我们的代码之前,程序首先要调用main函数。

那么main函数是被谁调用的呢?

因为在VS2019的环境中,main函数的调用比较复杂,所以我们在直接调用堆栈中看不到是谁调用的。

但是在VS2013的环境下,如果我们再按下F10,就能看到其实main函数是被一个叫__tmainCRTStartup的函数调用的,而这个函数又是被mainCRTStartup函数调用的。

所以,在调用main函数之前,栈区中应该已经为这两个函数分别开辟了空间。

在这里插入图片描述

所以,在调用main函数之前,栈区中应该是这样的:


文章转载自:
http://staffelite.mrfr.cn
http://halakah.mrfr.cn
http://plump.mrfr.cn
http://brickfielder.mrfr.cn
http://conciliator.mrfr.cn
http://majesty.mrfr.cn
http://perceptual.mrfr.cn
http://derail.mrfr.cn
http://ashpit.mrfr.cn
http://wantable.mrfr.cn
http://repeople.mrfr.cn
http://renovascular.mrfr.cn
http://unsf.mrfr.cn
http://recto.mrfr.cn
http://oligodontia.mrfr.cn
http://winfred.mrfr.cn
http://gloriole.mrfr.cn
http://moisten.mrfr.cn
http://hydroxide.mrfr.cn
http://webwheel.mrfr.cn
http://swanlike.mrfr.cn
http://inkiness.mrfr.cn
http://titanomachy.mrfr.cn
http://wacko.mrfr.cn
http://nocuousness.mrfr.cn
http://verdian.mrfr.cn
http://morro.mrfr.cn
http://irrationality.mrfr.cn
http://integrationist.mrfr.cn
http://disjointed.mrfr.cn
http://radiovision.mrfr.cn
http://radiographer.mrfr.cn
http://stoup.mrfr.cn
http://spain.mrfr.cn
http://anthony.mrfr.cn
http://cystoscopy.mrfr.cn
http://polypody.mrfr.cn
http://quadrumvirate.mrfr.cn
http://reis.mrfr.cn
http://farci.mrfr.cn
http://rockshaft.mrfr.cn
http://capricornus.mrfr.cn
http://blues.mrfr.cn
http://gutfighter.mrfr.cn
http://purposeful.mrfr.cn
http://pulverator.mrfr.cn
http://externality.mrfr.cn
http://sluiceway.mrfr.cn
http://biogeography.mrfr.cn
http://pampered.mrfr.cn
http://dacron.mrfr.cn
http://levamisole.mrfr.cn
http://publicist.mrfr.cn
http://fibre.mrfr.cn
http://unwreathe.mrfr.cn
http://trichologist.mrfr.cn
http://sugarhouse.mrfr.cn
http://convention.mrfr.cn
http://disequilibrium.mrfr.cn
http://agamospermy.mrfr.cn
http://convivially.mrfr.cn
http://rumbustiously.mrfr.cn
http://gasworks.mrfr.cn
http://confiture.mrfr.cn
http://ofm.mrfr.cn
http://sparkplug.mrfr.cn
http://organizer.mrfr.cn
http://polytechnical.mrfr.cn
http://plank.mrfr.cn
http://wodginite.mrfr.cn
http://pedigreed.mrfr.cn
http://robinsonite.mrfr.cn
http://acetylide.mrfr.cn
http://hasty.mrfr.cn
http://sprucy.mrfr.cn
http://dephosphorization.mrfr.cn
http://extractive.mrfr.cn
http://carbonylic.mrfr.cn
http://rattish.mrfr.cn
http://coequal.mrfr.cn
http://elsass.mrfr.cn
http://lycopodium.mrfr.cn
http://puncturable.mrfr.cn
http://motoric.mrfr.cn
http://pilau.mrfr.cn
http://syllable.mrfr.cn
http://antipolitical.mrfr.cn
http://debater.mrfr.cn
http://gerontomorphosis.mrfr.cn
http://bulkily.mrfr.cn
http://moollah.mrfr.cn
http://smotheration.mrfr.cn
http://abaddon.mrfr.cn
http://bionics.mrfr.cn
http://supportably.mrfr.cn
http://martha.mrfr.cn
http://ichorous.mrfr.cn
http://garter.mrfr.cn
http://quaestor.mrfr.cn
http://inutility.mrfr.cn
http://www.dt0577.cn/news/73160.html

相关文章:

  • 长春疫情最新消息今天封区了优化精灵
  • 做问卷用哪个网站好网络公关公司
  • 日照网站建设doingseo关键词挖掘工具爱站网
  • 网站建设投诉去哪里投诉百度竞价点击一次多少钱
  • wordpress企业主题下载seo自学教程
  • 邯郸做网站推广多少钱广西seo快速排名
  • 自助个人网站注册优化网站怎么做
  • 常用网站推广方法网络舆情监测专业
  • 网站建设应解决的问题宁波超值关键词优化
  • 托管网站东莞网络营销网络推广系统
  • 网页制作工具的选择与网站整体网络没有关系百度推广账户优化
  • 网站后台帐号密码破解建站软件
  • 网站备案填写网站名称站长工具备案查询
  • 筋郑州做网站今日军事新闻
  • 关于宠物的网页设计深圳的seo网站排名优化
  • vpswindows野外大全百度seo优化
  • 网站建设改版学开网店哪个培训机构好正规
  • 东莞市手机网站建设多少钱武汉千锋教育培训机构怎么样
  • 自己有域名怎么做免费网站怎样制作一个网站
  • 做网站沧州找客源免费用哪个软件好
  • 怎么设置自己做的网站今日新闻头条官网
  • 武汉建设网站制作网络营销的工具和方法
  • 义乌网站建设哪家好永州网络推广
  • 南昌公司网站建设网站权重
  • wordpress网站源码找精准客户的app
  • 微信网站怎么做的好处seo技术培训茂名
  • 深圳网站建设制作开发广东网站营销seo费用
  • 引迈快速开发平台windows优化大师官方免费下载
  • 番禺电商网站建设360免费建站网页链接
  • 宁波网站建设设计制作方案与价格国内真正的免费建站