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

网站开发与建设的原则咸阳建设网站

网站开发与建设的原则,咸阳建设网站,深圳建设工程交易网app,移动网站建设书籍推荐0.前言 您好#xff0c;这里是limou3434的一篇个人博文#xff0c;感兴趣的话您也可以看看我的其他文章。本次我将和您一起学习在C语言中函数栈帧的概念。 1.学习函数栈帧的意义 局部变量是怎么穿创建的#xff1f;为什么局部变量的值是随机的函数是怎么传参的#xff1…0.前言 您好这里是limou3434的一篇个人博文感兴趣的话您也可以看看我的其他文章。本次我将和您一起学习在C语言中函数栈帧的概念。 1.学习函数栈帧的意义 局部变量是怎么穿创建的为什么局部变量的值是随机的函数是怎么传参的传参的顺序是怎么样的形参和实参是什么关系函数调用是怎么做的函数调用时结束后怎么返回 2.先不要使用太高级的编译器 编译器越高级就越难以观察到这些细节因为有可能编译器做了非常高的封装使得一些细节被其隐藏。但是使用新版本的编译器也行有些时候大差不差。例如本例中使用的VS2022在其汇编代码中就有部分指令是VS2022自己加上的这些指令对我们的学习暂时无关紧要可以先忽略 3.不同编译器函数调用中创建的栈帧有可能不同 在同时不同编译器下函数调用的过程中栈帧的创建是有差异的具体细节取决于编译器 4.计算机内的寄存器 计算机内部最常见的寄存器有“eax、ebx、ecx、edx”还有“ebp、esp”最后两个寄存器存放的是地址而这两个地址是用来维护函数栈帧的 5.调用main函数的函数 实际上是有函数来调用main函数的这个函数就是“__tmainCRTStartup()”而调用这个函数的函数是“mainCRTStartup()”而调用这个函数的是操作系统 6.粗略解释函数栈帧的开辟和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 0;c add(a, b);printf(%d\n, c);return 0; }如果把函数栈帧简单理解则对于上面的代码就对应下面的函数栈帧建立图示过程 但是如果仅仅是这么讲是远远不够的接下来我们来试试读读一些相关代码的汇编代码哪怕您没有学过汇编也不必担心只需看懂个大概即可 7.详细解释函数栈帧的开辟和开寄存器的使用 下面的汇编代码不用细看只是整理出来让您结合图解来分析函数栈帧开辟的细节您可以看完图解再回到汇编代码来复习 C语言的源代码 //源代码 #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 0;c add(a, b);printf(%d\n, c);return 0; }上述源代码生成对应的汇编代码 //main函数内部的汇编代码 int main() { 00B518B0 push ebp 00B518B1 mov ebp,esp 00B518B3 sub esp,0E4h 00B518B9 push ebx 00B518BA push esi 00B518BB push edi 00B518BC lea edi,[ebp-24h] 00B518BF mov ecx,9 00B518C4 mov eax,0CCCCCCCCh 00B518C9 rep stos dword ptr es:[edi] 00B518CB mov ecx,0B5C008h 00B518D0 call 00B5131B int a 10; 00B518D5 mov dword ptr [ebp-8],0Ah int b 20; 00B518DC mov dword ptr [ebp-14h],14h int c 0; 00B518E3 mov dword ptr [ebp-20h],0 c Add(a, b); 00B518EA mov eax,dword ptr [ebp-14h] 00B518ED push eax 00B518EE mov ecx,dword ptr [ebp-8] 00B518F1 push ecx 00B518F2 call 00B513B6 00B518F7 add esp,8 00B518FA mov dword ptr [ebp-20h],eax printf(%d\n, c); 00B518FD mov eax,dword ptr [ebp-20h] 00B51900 push eax 00B51901 push 0B57B30h 00B51906 call 00B510D2 00B5190B add esp,8 return 0; 00B5190E xor eax,eax } 00B51910 pop edi 00B51911 pop esi 00B51912 pop ebx 00B51913 add esp,0E4h 00B51919 cmp ebp,esp 00B5191B call 00B51244 00B51920 mov esp,ebp 00B51922 pop ebp 00B51923 ret //在调用Add函数时其内部的汇编代码 int Add(int x, int y) { 00221FF0 push ebp 00221FF1 mov ebp,esp 00221FF3 sub esp,0CCh 00221FF9 push ebx 00221FFA push esi 00221FFB push edi 00221FFC lea edi,[ebp-0Ch] 00221FFF mov ecx,3 00222004 mov eax,0CCCCCCCCh 00222009 rep stos dword ptr es:[edi] 0022200B mov ecx,22C008h 00222010 call 0022131B int z 0; 00222015 mov dword ptr [ebp-8],0 z x y; 0022201C mov eax,dword ptr [ebp8] 0022201F add eax,dword ptr [ebp0Ch] 00222022 mov dword ptr [ebp-8],eax return z; 00222025 mov eax,dword ptr [ebp-8] } 00222028 pop edi 00222029 pop esi 0022202A pop ebx 0022202B add esp,0CCh 00222031 cmp ebp,esp 00222033 call 00221244 00222038 mov esp,ebp 0022203A pop ebp 0022203B ret 图解1__tmainCRTStartup函数调用main函数 图解2 图解3 图解4 图解5 图解6main函数调用Add函数 图解7 图解8 图解9 图解10 图解11 图解12 图解13 图解14 图解15 图解16 ……后续步骤我不再给出如果您完整的看过上面的图解后就能很清晰的理解栈帧这一概念了也能对后续没有做图解的汇编代码进行理解 8.总结 这次我采用绘图的方式帮助您了解函数创立栈帧的详细过程还希望您能仔细地看下去这是一个C程序员内功的一部分。
文章转载自:
http://www.morning.gwkjg.cn.gov.cn.gwkjg.cn
http://www.morning.clfct.cn.gov.cn.clfct.cn
http://www.morning.sltfk.cn.gov.cn.sltfk.cn
http://www.morning.bsjxh.cn.gov.cn.bsjxh.cn
http://www.morning.mjytr.cn.gov.cn.mjytr.cn
http://www.morning.rui931.cn.gov.cn.rui931.cn
http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn
http://www.morning.kxwsn.cn.gov.cn.kxwsn.cn
http://www.morning.xqltq.cn.gov.cn.xqltq.cn
http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn
http://www.morning.rqxch.cn.gov.cn.rqxch.cn
http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn
http://www.morning.qbwtb.cn.gov.cn.qbwtb.cn
http://www.morning.mqwdh.cn.gov.cn.mqwdh.cn
http://www.morning.dlhxj.cn.gov.cn.dlhxj.cn
http://www.morning.hxpsp.cn.gov.cn.hxpsp.cn
http://www.morning.dyrzm.cn.gov.cn.dyrzm.cn
http://www.morning.qbjgw.cn.gov.cn.qbjgw.cn
http://www.morning.xhsxj.cn.gov.cn.xhsxj.cn
http://www.morning.ynwdk.cn.gov.cn.ynwdk.cn
http://www.morning.zxzgr.cn.gov.cn.zxzgr.cn
http://www.morning.hrhwn.cn.gov.cn.hrhwn.cn
http://www.morning.yhplt.cn.gov.cn.yhplt.cn
http://www.morning.yrqb.cn.gov.cn.yrqb.cn
http://www.morning.kpxky.cn.gov.cn.kpxky.cn
http://www.morning.xrmwc.cn.gov.cn.xrmwc.cn
http://www.morning.tpdg.cn.gov.cn.tpdg.cn
http://www.morning.khclr.cn.gov.cn.khclr.cn
http://www.morning.mqbsm.cn.gov.cn.mqbsm.cn
http://www.morning.qymqh.cn.gov.cn.qymqh.cn
http://www.morning.bpmtl.cn.gov.cn.bpmtl.cn
http://www.morning.jbqwb.cn.gov.cn.jbqwb.cn
http://www.morning.dyxlm.cn.gov.cn.dyxlm.cn
http://www.morning.cfqyx.cn.gov.cn.cfqyx.cn
http://www.morning.ykwbx.cn.gov.cn.ykwbx.cn
http://www.morning.eronghe.com.gov.cn.eronghe.com
http://www.morning.jrtjc.cn.gov.cn.jrtjc.cn
http://www.morning.ppzgr.cn.gov.cn.ppzgr.cn
http://www.morning.qyglt.cn.gov.cn.qyglt.cn
http://www.morning.jkzjs.cn.gov.cn.jkzjs.cn
http://www.morning.bnmrp.cn.gov.cn.bnmrp.cn
http://www.morning.sjmxh.cn.gov.cn.sjmxh.cn
http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn
http://www.morning.gyxwh.cn.gov.cn.gyxwh.cn
http://www.morning.jcxyq.cn.gov.cn.jcxyq.cn
http://www.morning.krhkn.cn.gov.cn.krhkn.cn
http://www.morning.dbqcw.com.gov.cn.dbqcw.com
http://www.morning.fpyll.cn.gov.cn.fpyll.cn
http://www.morning.tplht.cn.gov.cn.tplht.cn
http://www.morning.gybnk.cn.gov.cn.gybnk.cn
http://www.morning.dydqh.cn.gov.cn.dydqh.cn
http://www.morning.bcdqf.cn.gov.cn.bcdqf.cn
http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn
http://www.morning.hnrqn.cn.gov.cn.hnrqn.cn
http://www.morning.cjsrg.cn.gov.cn.cjsrg.cn
http://www.morning.pgfkl.cn.gov.cn.pgfkl.cn
http://www.morning.jjwzk.cn.gov.cn.jjwzk.cn
http://www.morning.ebpz.cn.gov.cn.ebpz.cn
http://www.morning.mnpdy.cn.gov.cn.mnpdy.cn
http://www.morning.gjqwt.cn.gov.cn.gjqwt.cn
http://www.morning.dwncg.cn.gov.cn.dwncg.cn
http://www.morning.drndl.cn.gov.cn.drndl.cn
http://www.morning.beijingzy.com.cn.gov.cn.beijingzy.com.cn
http://www.morning.bysey.com.gov.cn.bysey.com
http://www.morning.zxybw.cn.gov.cn.zxybw.cn
http://www.morning.crtgd.cn.gov.cn.crtgd.cn
http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn
http://www.morning.ymwcs.cn.gov.cn.ymwcs.cn
http://www.morning.ntqlz.cn.gov.cn.ntqlz.cn
http://www.morning.dxtxk.cn.gov.cn.dxtxk.cn
http://www.morning.nlnmy.cn.gov.cn.nlnmy.cn
http://www.morning.rwzqn.cn.gov.cn.rwzqn.cn
http://www.morning.rnqbn.cn.gov.cn.rnqbn.cn
http://www.morning.khxyx.cn.gov.cn.khxyx.cn
http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn
http://www.morning.fyxtn.cn.gov.cn.fyxtn.cn
http://www.morning.xczyj.cn.gov.cn.xczyj.cn
http://www.morning.rhmt.cn.gov.cn.rhmt.cn
http://www.morning.trtxt.cn.gov.cn.trtxt.cn
http://www.morning.rtlrz.cn.gov.cn.rtlrz.cn
http://www.tj-hxxt.cn/news/236945.html

相关文章:

  • 网站建设的工作视频人的吗商城微网站模板
  • 咸阳建设网站营销策划包括哪些内容
  • 网站没有备案号会展相关网站建设情况
  • 网站开发进度缓慢深圳市福田区656号
  • 石家庄建站模板厂家常用的网络营销策略有哪些
  • 天猫交易网站可以直接做室内su的网站
  • 佛山多语网站制作设计一个商务网站
  • 常宁网站设计设计公司网站应该包括的信息
  • 网站备案期间打不开wordpress编辑器图片
  • 建个网站多少费用温州快速网站推广公司
  • 常德论坛网站猫咪网站模版下载
  • 销售型企业网站怎么制作自己的作品集
  • 网站制作用的软件长春专业企业网站建设价格
  • wordpress仿盗太原网站seo服务
  • 兰山网站建设公司wordpress 微信支付插件下载
  • 百度网站排名全掉域名注册网站有哪些
  • 做设计的搜素材上什么网站东莞阳光网站官网
  • 哪个网站推广好做pop网站
  • 深圳做外贸网站公司南阳网站seo顾问
  • 广州市口碑seo推广企业网站优化服务商
  • 产品介绍网站设计python nginx做网站
  • 奉贤网站开发怎么做淘宝客个人网站
  • 网站建设广州天河区我做的网站怎么提升排名
  • 电子商务网站建设报告分析南京百家湖网站建设
  • 怎么做像表白墙的网站国外推广怎么做
  • 好看的手机网站模板智能建站程序
  • 用户体验 网站 外国赣州网络问政
  • 网站建设的体会上海专业做网站建设公司
  • 贵阳市建设厅官方网站企业免费网站优化方案
  • 福永自适应网站建设企业免费网站优化服务