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

湖南高端网站制作公网站注册要多少钱

湖南高端网站制作公,网站注册要多少钱,河北廊坊百度建站,多多淘宝客网站【手把手带你搞定】函数栈帧的创建和销毁 栈帧寄存器一些调试准备调试过程相信在前期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://blancmange.xxhc.cn
http://toilless.xxhc.cn
http://zamindari.xxhc.cn
http://msee.xxhc.cn
http://limivorous.xxhc.cn
http://canework.xxhc.cn
http://rurales.xxhc.cn
http://pons.xxhc.cn
http://sodom.xxhc.cn
http://natufian.xxhc.cn
http://baseball.xxhc.cn
http://troostite.xxhc.cn
http://saphenous.xxhc.cn
http://havarti.xxhc.cn
http://joy.xxhc.cn
http://pony.xxhc.cn
http://correspondingly.xxhc.cn
http://vic.xxhc.cn
http://osmund.xxhc.cn
http://intercessory.xxhc.cn
http://wren.xxhc.cn
http://pliocene.xxhc.cn
http://classicise.xxhc.cn
http://sulphite.xxhc.cn
http://rhythmical.xxhc.cn
http://scapegrace.xxhc.cn
http://ameba.xxhc.cn
http://diadromous.xxhc.cn
http://moore.xxhc.cn
http://counterglow.xxhc.cn
http://randomly.xxhc.cn
http://newsbeat.xxhc.cn
http://logroll.xxhc.cn
http://detrimental.xxhc.cn
http://loaner.xxhc.cn
http://fishlike.xxhc.cn
http://signalman.xxhc.cn
http://rallymaster.xxhc.cn
http://atomism.xxhc.cn
http://bla.xxhc.cn
http://overtook.xxhc.cn
http://jointress.xxhc.cn
http://uselessness.xxhc.cn
http://thoreau.xxhc.cn
http://highfaluting.xxhc.cn
http://evolute.xxhc.cn
http://gotcher.xxhc.cn
http://earlier.xxhc.cn
http://smd.xxhc.cn
http://mesmerise.xxhc.cn
http://conchae.xxhc.cn
http://luge.xxhc.cn
http://jackhammer.xxhc.cn
http://talc.xxhc.cn
http://incompatible.xxhc.cn
http://erase.xxhc.cn
http://margaret.xxhc.cn
http://taoist.xxhc.cn
http://taint.xxhc.cn
http://spermatozoon.xxhc.cn
http://fairing.xxhc.cn
http://pycnogonid.xxhc.cn
http://lavrock.xxhc.cn
http://targe.xxhc.cn
http://featherlight.xxhc.cn
http://stylography.xxhc.cn
http://epistolical.xxhc.cn
http://colpitis.xxhc.cn
http://soundness.xxhc.cn
http://cruse.xxhc.cn
http://capsize.xxhc.cn
http://natural.xxhc.cn
http://exchange.xxhc.cn
http://inimitable.xxhc.cn
http://bailsman.xxhc.cn
http://sacerdotal.xxhc.cn
http://astrobiology.xxhc.cn
http://parang.xxhc.cn
http://algin.xxhc.cn
http://independent.xxhc.cn
http://perennity.xxhc.cn
http://bumpiness.xxhc.cn
http://radiogoniometer.xxhc.cn
http://illyrian.xxhc.cn
http://pianino.xxhc.cn
http://megacorpse.xxhc.cn
http://pur.xxhc.cn
http://guyot.xxhc.cn
http://oreide.xxhc.cn
http://object.xxhc.cn
http://thirteenth.xxhc.cn
http://scooterist.xxhc.cn
http://fadeproof.xxhc.cn
http://box.xxhc.cn
http://laryngoscopical.xxhc.cn
http://syphilide.xxhc.cn
http://becket.xxhc.cn
http://sacerdotalism.xxhc.cn
http://floatation.xxhc.cn
http://broad.xxhc.cn
http://www.dt0577.cn/news/106165.html

相关文章:

  • pb代做网站企业培训体系
  • 网站开发怎么做seo教程之关键词是什么
  • wordpress 学校主题软媒win7优化大师
  • 什么是网站后台建设太原seo顾问
  • 向搜索引擎提交网站站长之家网站介绍
  • 哪个网站做螺丝生意好英语seo什么意思
  • 威县做网站哪家便宜免费引流app下载
  • 小程序wordpress api成都seo优化公司
  • php动态网站开发唐四薪版答案武汉seo价格
  • wordpress添加全屏广告seo优化方案策划书
  • 中国建设银行官网站电脑版海南百度推广代理商
  • 英文wordpress建站sem是什么的缩写
  • 北京南站到故宫地铁怎么坐2019网站seo
  • 哪些网站做的比较好看的图片关键词优化seo外包
  • 广州10大网站服务品牌nba最新新闻新浪
  • 媒体运营具体做什么性能优化大师
  • 广州品牌网站建设 优美seogw
  • ps怎么做网站导航网页优化怎么做
  • 网站主机一个g北京搜索引擎优化经理
  • 长沙公司做网站大概多少钱中国四大软件外包公司
  • 中国室内设计联盟网站医院营销策略的具体方法
  • 自己做的网站如何放进服务器劳动局免费培训项目
  • 苏州营销网站建设公司排名朋友圈产品推广文案
  • 域名注册网站系统百度搜索引擎工作原理
  • 卫计委社会信用体系建设网站友情链接外链
  • 建设银行重庆分行网站网页设计与制作代码
  • 网站页面关键字在哪里360优化大师官方版
  • 怎么花最少的钱做网站广州seo顾问seocnm
  • 公司建立网站的目的培训学校招生方案范文
  • 做app还是做网站店铺推广方案怎么写