10.7 函数调用机制

  1. 函数调用机制引入:以代码清单10 - 2中MyFunc函数调用AddNum函数的汇编语言部分为例,说明函数调用机制,函数调用时栈发挥重要作用。
  2. 汇编代码解读:MyFunc函数汇编代码中,push ebp将ebp寄存器值入栈,mov ebp,esp将esp寄存器值赋给ebp寄存器;push 456和push 123将传递给AddNum函数的参数按456、123顺序入栈(C语言规定);call _AddNum指令使程序流程跳转到AddNum函数所在内存地址,同时该指令下一行内存地址自动入栈,函数处理完后通过ret指令出栈返回;add esp,8通过更新esp寄存器值实现栈中参数销毁(比两次pop指令更高效) 。
  3. 编译器优化:C语言源代码中存储AddNum函数返回值的变量c,因后续未使用,编译器出于优化目的(使程序运行更快、文件更小)未生成对应的汇编语言代码,编译时可能出现“变量赋值未被使用”的警告消息。
posted @   叽里呱啦哇里呱唧  阅读(0)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示