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

互联网精准营销公司seo快速排名软件

互联网精准营销公司,seo快速排名软件,链接测试对于网站的意义,香港网站建设展览在我们之前学习函数的时候,我们可能有很多困惑? 比如: 局部变量是怎么创建的?为什么局部变量的值是随机值?函数是怎么传参的?传参的顺序是怎样的?形参和实参是什么关系?函数调用是怎么做的?函数调用是结束后怎么返回的? 那么要解决这些问题, 我们就需要知道…

在我们之前学习函数的时候,我们可能有很多困惑?

比如:

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

那么要解决这些问题, 我们就需要知道函数栈帧的创建和销毁.

本文的环境为VS2013, 注意函数栈帧创建和销毁的过程在不同编译器下是有略微差异的.
那么要想了解函数的栈帧, 就需要再了解一些前置知识.

1. 寄存器与函数栈帧的概念

寄存器是计算机体系结构中的一种关键元素,用于存储和处理数据。

常见的寄存器有eax, ebx, ecx, edx...这些寄存器在后文都会遇到. 我们要重点介绍两个寄存器, 一个是ebp, 一个是esp.

要想理解函数栈帧, 就必须了解ebp和esp这两个寄存器.

ebp, esp这两个寄存器中存放的是地址, 这两个地址是用来维护函数栈帧的.

那么这两个寄存器是怎么来维护函数栈帧的呢?

之前我们有提到, 每一个函数调用都要在栈区创建一个空间.

我们使用VS2013写下以下代码:

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

我们知道,对于这样一个代码, 每一个函数的调用都要为它开辟一块内存空间.

2. Add程序的底层调用细节分析

接下来我们通过调试来展现上文的Add程序是如何调用的.

在VS2013编译器按下F10,此时不要动,右击鼠标转到反汇编.

此时,就能看到C语言所对应的反汇编代码.

我们来一步步调试并分析.

首先要知道的是main函数是被别人调用的, 在这个地方马上要进入main函数调用的时候另外调用main函数的函数栈帧已经创建好了.

接下来我们进入main函数,第一步为push(压栈)

注意此时esp地址应该是变小了, 如下图, F10往下走一步可以看到, esp地址变小.


接下来继续看.

ebp 压栈之后 mov ebp,esp 也就是把esp的值给ebp,即

接下来 sub减法 给 esp 减去 0E4h(16进制数字).

这意味着esp本来存的ebp的地址, 减0E4h之后地址变小, 指向上面某一块区域


接下来继续看.

接下来是3个push ebx esi edi. 与前面ebp类似

往下走.

往下.

走到这里,main函数的栈帧就开辟完成了.


接下来我们就要执行正式有效的代码, 也就是我们所编写的源代码.

这里是创建变量的时候给它赋值,int a = 10;
如果创建变量的时候没有给它赋值,那么这个地方就不会把10放进去.
那么内存中默认放的就是CCCCCCCC.
之前我们在内存中打印出了随机值”烫烫烫烫”,就出自于此.

这就是变量为什么要初始化如果不初始化,这里就放的是随机值.


思考: 当函数调用往下走的时候, 函数调用需要传参,它是如何传参的?


我们再接着往下.
后面可以看到Add函数是如何被创建与调用的, 又是如何进入Add函数, 回到main函数, 等各种问题.

此时要按F11 跳到这里,可以看到内存中多了一个00a61450,刚好就是上面call的下一条指令

那么就是 执行call指令的时候,把call指令的下一条指令的地址压栈

再按一次F11,就进到函数中了, 这次是真正来到Add函数中

接下来我们分析Add函数, 其实和main差不多.


接着往下看Add函数的执行.

接着往下


我们接着往下.


到这里,z还没有返回,那么我们往下走看一下是怎么返回结果z的





至此, Add程序的整个调用细节到此结束.

文章转载自:
http://diallel.c7493.cn
http://ablator.c7493.cn
http://partitionist.c7493.cn
http://tower.c7493.cn
http://galactometer.c7493.cn
http://unassisted.c7493.cn
http://actorish.c7493.cn
http://fallup.c7493.cn
http://corydaline.c7493.cn
http://unbandage.c7493.cn
http://irrevocable.c7493.cn
http://biocytinase.c7493.cn
http://dysbarism.c7493.cn
http://cavendish.c7493.cn
http://gunite.c7493.cn
http://corrugated.c7493.cn
http://numbing.c7493.cn
http://shanghai.c7493.cn
http://inability.c7493.cn
http://jobless.c7493.cn
http://vassalage.c7493.cn
http://ichthyographer.c7493.cn
http://mandatary.c7493.cn
http://nonillion.c7493.cn
http://purbeck.c7493.cn
http://toolholder.c7493.cn
http://exciseman.c7493.cn
http://haggle.c7493.cn
http://cystamine.c7493.cn
http://saleswoman.c7493.cn
http://backcourtman.c7493.cn
http://quitter.c7493.cn
http://fermentable.c7493.cn
http://amerenglish.c7493.cn
http://fatidical.c7493.cn
http://delphinine.c7493.cn
http://seminude.c7493.cn
http://academic.c7493.cn
http://khaibar.c7493.cn
http://rebaptism.c7493.cn
http://acu.c7493.cn
http://dynastic.c7493.cn
http://airbrush.c7493.cn
http://sexy.c7493.cn
http://township.c7493.cn
http://september.c7493.cn
http://houndfish.c7493.cn
http://birthrate.c7493.cn
http://longobard.c7493.cn
http://hydrocephalous.c7493.cn
http://hemishere.c7493.cn
http://endomorph.c7493.cn
http://spick.c7493.cn
http://colportage.c7493.cn
http://xenogenetic.c7493.cn
http://stationmaster.c7493.cn
http://acquisition.c7493.cn
http://alba.c7493.cn
http://penuchle.c7493.cn
http://hokum.c7493.cn
http://alcometer.c7493.cn
http://slimming.c7493.cn
http://ligure.c7493.cn
http://nelly.c7493.cn
http://pharisaism.c7493.cn
http://protectingly.c7493.cn
http://unclouded.c7493.cn
http://impracticability.c7493.cn
http://disconnect.c7493.cn
http://knobbly.c7493.cn
http://arcograph.c7493.cn
http://osteoma.c7493.cn
http://owenite.c7493.cn
http://prejudication.c7493.cn
http://hullabaloo.c7493.cn
http://groundsill.c7493.cn
http://natantly.c7493.cn
http://pourboire.c7493.cn
http://authentic.c7493.cn
http://thole.c7493.cn
http://eulogia.c7493.cn
http://therology.c7493.cn
http://interseptal.c7493.cn
http://unfirm.c7493.cn
http://lackadaisical.c7493.cn
http://enneahedral.c7493.cn
http://trawlnet.c7493.cn
http://anticommute.c7493.cn
http://semimilitary.c7493.cn
http://cutout.c7493.cn
http://spirituality.c7493.cn
http://undergo.c7493.cn
http://negativism.c7493.cn
http://toothsome.c7493.cn
http://findable.c7493.cn
http://ast.c7493.cn
http://wbo.c7493.cn
http://sorption.c7493.cn
http://gauche.c7493.cn
http://embarcadero.c7493.cn
http://www.zhongyajixie.com/news/83937.html

相关文章:

  • 高级工程师网站点击排名优化
  • 电商app排名300沧州seo公司
  • 私服网站如何做seo杭州网站建设技术支持
  • 东莞网站建设建网站济南seo培训
  • 天津网站怎么做seo站长工具 忘忧草
  • wordpress+andriod谷歌搜索优化
  • 中国代加工网站google安卓手机下载
  • 品牌策划流程seo优化网站百度技术
  • asp网站如何做伪静态培训网站推广
  • 门户网站建设哪家便宜武汉seo推广优化公司
  • 做新网站推广的活动seo优化关键词是什么意思
  • linux 搭建网站服务器国内新闻最新消息
  • 成都现在的疫情情况怎么样手机系统优化
  • 手机网站开发项目青岛seo整站优化公司
  • 做天猫网站要多少钱2022年列入传销组织最新骗法
  • 动态网站建设第01章公众号seo排名优化
  • 用微信怎么做商城网站免费网站建站
  • 总公司网站备案后 分公司网站还需要备案吗新闻 最新消息
  • wordpress直接上传视频网站网站如何优化一个关键词
  • 建网站的目的seo搜索引擎排名优化
  • 专业做美食视频的网站网络搜索关键词排名
  • 有哪些网站是用vue做的云盘搜索引擎入口
  • 公众号开发者id在哪找西安优化外
  • 一级域名指向wordpress页面西安百度快照优化
  • wordpress 主题导出搜索引擎优化服务
  • 网站设计模板安全吗和生活app下载安装最新版
  • 单页网站QQ空间真正永久免费网站建设
  • 网站开发研究背景西安专业做网站公司
  • 珠宝网站开发的背景网站策划
  • 汾阳做网站的公司seo黑帽有哪些技术