1 / 11
文档名称:

2021年c语言函数调用过程图解c语言函数调用过程.docx

格式:docx   大小:19KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

2021年c语言函数调用过程图解c语言函数调用过程.docx

上传人:业精于勤 2021/4/10 文件大小:19 KB

下载得到文件列表

2021年c语言函数调用过程图解c语言函数调用过程.docx

文档介绍

文档介绍:c语言函数调用过程图解c语言函数调用过程

  c语言函数你知道多少?它的调用过程你了解吗?下面xx为大家介绍一下c语言函数,期望对你有帮助。
  c语言函数编译环境
  OS:Axianux
  Compiler:gcc3..
  Linker:SolarisLinkEditors
  DebugTool:gdb
  Editor:vi
  c语言函数最简C代码分析
  为简化问题,来分析一下最简的c代码生成的汇编代码:
  #vi
  intmain
  {
  return0;
  }
  编译该程序,产生二进制文件:
  #gcc-ostart
  #filestart
  start:ELF32-bitLSBexecutable,Intel80386,version1(SYSV),forGNU/Linux,dynamicallylinked(usessharedlibs),notstripped
  start是一个ELF格式32位小端(LittleEndian)的可实施文件,动态链接而且符号表没有去除。这正是Unix/Linux平台经典的可实施文件格式。
  用gdb反汇编能够观察生成的汇编代码:
  ******@15h166attack$gdbstart
  GNUgdbAsianux
  Copyright2021FreeSoftwareFoundation,Inc.
  GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouarewelcometochangeitand/ordistributecopiesofitundercertainconditions.
  Type"showcopying"toseetheconditions.
  "showwarranty"fordetails.
  ThisGDBwasconfiguredas"i386-asianux-linux-gnu"...(nodebuggingsymbolsfound)...Usinghostlibthread_dblibrary"/lib/tls/libthread_".
  (gdb)disassemblemain--->反汇编main函数
  Dumpofassemblercodeforfunctionmain:
  0x08048310:push%ebp--->ebp寄存器内容压栈,即保留main函数的上级调用函数的栈基地址
  0x08048311:mov%esp,%ebp--->esp值赋给ebp,设置main函数的栈基址
  0x08048313:sub$0x8,%esp--->经过ESP-8来分配8字节堆栈空间
  0x08048316:and$0xfffffff0,%esp--->使栈地址16字节对齐
  0x08048319:mov$0x0,%eax--->无意义
  0x0804831e:sub%eax,%esp--->无意义
  0x08048320:mov$0x0,%eax--->设置函数返回值0
  0x08048325:leave--->将ebp值赋给esp,pop先前栈内的上级函数栈的基地址给ebp,恢复原栈基址.
  0x08048326:ret--->main函数返回,回到上级调用.
  0x08048327:nop
  Endofassemblerdump.
  注:这里得到的汇编语言语法格式和Intel的手册有很大不一样,Unix/Linux采取AT&T汇编格式作为汇编语言的语法格式,假如想了解AT&T汇编能够参考文章Linux汇编语言开发指南.
  问题一:谁调用了main函数?
  在C语言的层面来看,main函数是一个程序的起始入口点,而实际上,ELF可实施文件的入口点并不是main而是_start。
  gdb也能够反汇编_start:
  (gdb)disass_start--->从_start的地址开始反汇编
  Dumpofassemblercodeforfunction_start:
  0x08048264:xor%ebp,%ebp
  0x08048266:pop%esi
  0x08048267:mov%esp,%ecx
  0x08048269:and$0xfffffff0,%esp
  0x0804826c:push%eax
  0x0804826d:push%esp
  0x0804826e:push%

最近更新

2024年湖南省郴州市气象局事业单位招聘4人历年.. 60页

2024年甘肃省国家税务局系统招聘190人历年高频.. 60页

2024年福建三明市三元区社区工作者招聘15人历.. 60页

2024年科技部事业单位公开招聘68名历年高频难.. 59页

2024年贵州中烟工业招聘107人历年高频难、易点.. 89页

2024年贵州省机关事务管理局招聘历年高频难、.. 59页

2023年湖南常德临澧县县直部分事业单位选调10.. 118页

2024年吉林工信厅直属事业单位公开招聘历年高.. 117页

2024年湖北事业单位联考系列讲座历年高频难、.. 59页

2024年湖北神农架林区科技局招聘工作人员历年.. 60页

2024年湖南益阳赫山区事业单位招聘40人历年高.. 61页

2024年福建省莆田市湄洲管委会下属事业单位招.. 59页

2024年贵州事业单位招聘一周盘点历年高频难、.. 59页

2024年贵州省卫生计生委直属事业单位招聘24人.. 59页

2024年贵州省湄潭县事业单位招聘42人历年高频.. 59页

2023年国网北京经济技术研究院招聘毕业生(第二.. 279页

2023年广西柳州市事业单位招聘中高级医疗人才.. 276页

2024上半年江苏省扬州高邮市事业单位招聘157人.. 272页

2023年吉林省民航机场集团公司招聘40人高频考.. 282页

临床科室、护理单元、医技科室6S评价标准考评.. 37页

入团志愿书1000字左右10篇 13页

谈谈幼儿园纸艺活动的开展途径 6页

小学语文《匆匆》教案基于学科核心素养的教学.. 4页

向左走,向右走 2页

PDCA标准总结案例模板范例范例护理部应用PDCA.. 11页

当下的力量 作者:艾克哈特·铎利著 周家.. 39页

基于指标体系的农商银行网点简易核算研究 8页

厂房物业交付确认书 2页

卒中预警综合征-赵蕾 27页