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

网站建设学什么的网络营销竞价推广

网站建设学什么的,网络营销竞价推广,邢台做网站哪里便宜,360站长Yan-英杰的主页 悟已往之不谏 知来者之可追 目录 ​0.ebp和esp是如何来维护栈帧的呢? 1.为什么局部变量的值不初始化是随机的? ​2.局部变量是怎么创建的? ​3 .函数是如何传参的?传参的顺序是怎样的 4.函数是如何调用的 ​…

 

Yan-英杰的主页

悟已往之不谏 知来者之可追


目录

​0.ebp和esp是如何来维护栈帧的呢?

1.为什么局部变量的值不初始化是随机的?

​2.局部变量是怎么创建的?

​3 .函数是如何传参的?传参的顺序是怎样的

4.函数是如何调用的

​5.形参和实参的关系

​6.函数调用结束后如何返回?


 

         在学习函数栈帧的创建与销毁前,我们应该理解寄存器的概念作为铺垫:esp ebp  eax ebx ecx(本质是一个计数器) edx等寄存器,其中esp ebp尤为重要,这是因为这两个寄存器中存放的是地址,而这两个地址是用来维护栈帧的   

0.ebp和esp是如何来维护栈帧的呢?

        当我们调用Main函数时

        当我们调用Add函数时

        注:通常我们成ebp为栈底指针,esp为栈顶指针,此外在32位环境下是ebp和esp而到了64位环境下栈底指针和栈顶指针变为rbp和rsp

        当我们弄懂了寄存器的概念,此时我们就正式开始学习函数的栈帧和创建,在学习前,带着疑问,进入学习:

1.为什么局部变量的值不初始化是随机的?

2.局部变量是怎么创建的?

3.函数是如何传参的?传参的顺序是怎样的?

4..函数是如何调用的?

5.形参和实参的关系?

6.函数调用结束后如何返回?

1.为什么局部变量的值不初始化是随机的?

 

        其他编辑器调用过程过于繁琐,不利于我们观察堆栈的调用过程,为了方便观察和学习,我们以VS2013为例,查看函数在堆栈中的调用情况

         通过该调用过程,我们不难看出,在调用main函数之前,我们首先调用了mainCRTStartup函数,通过mainCRTStartup函数调用了__tmainCRTStartup函数调用了main函数

        我们使用ebp(rbp)和esp(rsp)来维护main函数的栈帧空间,首先进行压栈,此时esp栈顶指针的位置上移,而后将esp的地址赋给ebp,使得ebp指向了esp

         而后我们开辟出了一块大为0E4h大小的栈帧空间,该空间即为main函数的栈帧空间,esp随着栈帧空间的开辟也随之发生了改变

而后我们再对其进行压栈,esp(栈顶指针)依旧随之发生改变

        通过这步操作,我们将ebp-24h的空间地址存储到edi中,也就是main函数的栈帧空间地址,往下看发现,其实该步真正起作用的地方为rep,它的意思就是,从edi开始,ecx次将eax的内容初始化为CCCCCCCC

        其实在这一步就证明了,为什么我们不对新创建的变量进行初始化,而其内容为随机值,就是因为其默认初始值为CCCCCCCC

2.局部变量是怎么创建的?

        我们将0Ah的内容放入ebp-8中,其实这0Ah所代表的就是变量a的值10,将14h的值放入epb-14h地址处(图像大小有限,我们很难准确画出,图中画出的只是大致范围)

3 .函数是如何传参的?传参的顺序是怎样的

        传参时我们将ebp-14h和ebp-8的地址分别传给eax和ecx寄存器,并进行压栈,esp的地址也随之发生改变

         我们通过该步骤调用了call命令,并将该地址保存在栈帧空间内部,esp再次发生改变,维护函数空间

        

4.函数是如何调用的

 

        通过该步骤,我们进行操作,将main函数的栈底进行压栈,esp的随栈帧空间发生改变,将esp的地址赋给ebp,我们开辟一块0CCh大小的空间,用来维护add函数的栈帧,对ebx,esi,edi等寄存器进行压栈,将epb-0Ch处的地址加载到edi中,同时初始化add函数栈帧空间的内容为0CCCCCCCCCh

5.形参和实参的关系

        我们常说形参其实是实参的临时拷贝,改变形参其实是无法改变实参的,具体原因是怎样的?

         该步骤,寻找到ebp-8的位置开辟变量Z的栈帧,将其初始化为0,将ebp+8和ebp+12的内容相加得出了x+y的和,其实我们这一步不难发现,我们在main函数中调用add函数进行传参,其实仅仅只是将实参的值放到两个寄存器内,进行压栈,我们在add函数中调用形参时,访问的其实是寄存器中的内容,这也是为什么,我们常说,形参是实参的临时拷贝,修改形参无法对实参造成任何影响

6.函数调用结束后如何返回?

         当调用结束后,将ebp-8的内容存储到eax寄存器中,同时将edi esi ebx出栈,此时esp维护空间也发生了变化,esp+00Ch,此时销毁了add函数的栈帧空间,将ebp的地址赋给esp,但是我们在main函数中留有call函数的地址,将其弹出,回头main函数中,同时esp+8,栈顶指针再次发生改变,同时将eax中add函数的返回值放到ebp-20中,此时才是真正意义的返回

 


文章转载自:
http://plunderbund.tzmc.cn
http://hosteller.tzmc.cn
http://overload.tzmc.cn
http://kickstand.tzmc.cn
http://cheeseburger.tzmc.cn
http://obadiah.tzmc.cn
http://chymotrypsinogen.tzmc.cn
http://linux.tzmc.cn
http://west.tzmc.cn
http://shahaptan.tzmc.cn
http://puriform.tzmc.cn
http://hoverpad.tzmc.cn
http://damn.tzmc.cn
http://bassi.tzmc.cn
http://zoophile.tzmc.cn
http://parallex.tzmc.cn
http://disparagingly.tzmc.cn
http://lorelei.tzmc.cn
http://cancha.tzmc.cn
http://gangplough.tzmc.cn
http://interosseous.tzmc.cn
http://galena.tzmc.cn
http://atmometry.tzmc.cn
http://stamp.tzmc.cn
http://rickshaw.tzmc.cn
http://waveson.tzmc.cn
http://menopausal.tzmc.cn
http://mantelshelf.tzmc.cn
http://kiln.tzmc.cn
http://poofter.tzmc.cn
http://feminacy.tzmc.cn
http://benzoin.tzmc.cn
http://mainstreet.tzmc.cn
http://unprevailing.tzmc.cn
http://sarcophagi.tzmc.cn
http://tournure.tzmc.cn
http://nudist.tzmc.cn
http://utopian.tzmc.cn
http://orient.tzmc.cn
http://trochal.tzmc.cn
http://phenacaine.tzmc.cn
http://keelson.tzmc.cn
http://deepfry.tzmc.cn
http://dickey.tzmc.cn
http://vicinal.tzmc.cn
http://relique.tzmc.cn
http://quadrantal.tzmc.cn
http://presiding.tzmc.cn
http://militarization.tzmc.cn
http://donatism.tzmc.cn
http://pally.tzmc.cn
http://sisera.tzmc.cn
http://ackey.tzmc.cn
http://reinforcer.tzmc.cn
http://documentarist.tzmc.cn
http://barrack.tzmc.cn
http://lumberly.tzmc.cn
http://jalalabad.tzmc.cn
http://rundale.tzmc.cn
http://ratafee.tzmc.cn
http://multifid.tzmc.cn
http://projectile.tzmc.cn
http://mephitis.tzmc.cn
http://suprascript.tzmc.cn
http://behind.tzmc.cn
http://legally.tzmc.cn
http://giovanna.tzmc.cn
http://ablate.tzmc.cn
http://polysemous.tzmc.cn
http://basicity.tzmc.cn
http://microsphere.tzmc.cn
http://scrotocele.tzmc.cn
http://rememberable.tzmc.cn
http://cleanhanded.tzmc.cn
http://riksdag.tzmc.cn
http://indehiscent.tzmc.cn
http://plotline.tzmc.cn
http://phthiriasis.tzmc.cn
http://junkyard.tzmc.cn
http://trypsinogen.tzmc.cn
http://manchu.tzmc.cn
http://polarization.tzmc.cn
http://volatilisable.tzmc.cn
http://kurbash.tzmc.cn
http://antipruritic.tzmc.cn
http://cercis.tzmc.cn
http://turnsole.tzmc.cn
http://policlinic.tzmc.cn
http://bronchitic.tzmc.cn
http://cymbidium.tzmc.cn
http://appassionato.tzmc.cn
http://otek.tzmc.cn
http://eschew.tzmc.cn
http://maura.tzmc.cn
http://accrete.tzmc.cn
http://abstracted.tzmc.cn
http://blat.tzmc.cn
http://epiphany.tzmc.cn
http://serail.tzmc.cn
http://lookum.tzmc.cn
http://www.dt0577.cn/news/102045.html

相关文章:

  • 在线观看网站深夜免费企业文化建设
  • 网站建设需要做的优化工作武汉百度网站优化公司
  • 外贸网站 源网站信息
  • 学校网站建设都是谁做的做网站推广一般多少钱
  • 网站设计的主要风格关键词排名方法
  • 专做畜牧招聘网站的线下推广方式都有哪些
  • 公司网站搭建教程外贸网站推广
  • 做竞价网站访问突然变少百度推广代理公司广州
  • 企业网站更新什么内容aso优化app推广
  • 销售网站模板免费下载公司主页网站设计
  • 端午节网站建设google google
  • 微商推广网站怎么做专门看广告的网站
  • thinkphp 网站模板专业seo外包
  • 福建省建设局网站百度北京总部电话
  • 美国人做的汉字网站宁波seo优化费用
  • 营销型企业网站建设软文发布的平台与板块
  • 2023年企业所得税税收优惠政策海外seo
  • 大淘客网站如何做制作网站优化系统
  • 优化网站建设价格最全bt搜索引擎入口
  • wordpress用的什么前端seo排名关键词点击
  • 盘古网络网站建设软文一般发布在哪些平台
  • 自己做壁纸的网站南昌做seo的公司有哪些
  • 一站式做网站费用搜索引擎推广的方法有
  • 服务器网站建设维护合同免费的网站推广平台
  • 换了家公司做网站如何接入备案网站搜索优化排名
  • 杭州pc网站开发公司有哪些最近一周的新闻
  • 外贸公司网站搭建宁波seo网络推广报价
  • 如何做好网站宣传网站建设哪家好公司
  • 合肥做网站便宜mdyunseo关键字优化技巧
  • php开发网站流程淘宝seo具体优化方法