深入理解函数调用原理

码农天地 -
深入理解函数调用原理

这是一篇讲述函数调用原理的文章,通过大量的示意图从比较基础的概念开始阐述函数调用时堆栈的完整变化过程,同时还会通过具体例子来分析在X-64平台上函数调用在汇编级的表示,从而深刻理解函数调用原理。最后会提供几个例子来发现C语言函数栈帧的一些有意思的行为。

全文将带领你领略函数与栈的魅力,文章提供了gitbook的阅读方式。
如果你觉得对你有帮助,可以来到文章的github仓库点个star啊!

目录前置知识内存中的栈控制转移数据传递寄存器的保存与恢复局部变量的存储函数栈帧C语言函数栈帧实例一个有趣的例子手动修改栈帧数据总结本文可以收获什么?函数间如何转移控制函数间如何传递数据栈帧的初始化与销毁C/C++数组越界的危害为什么内联(inline)函数效率高为什么尽量用循环来代替递归调用为什么静态变量在函数返回后不会被释放什么是栈溢出攻击其他

文中有一个重要的概念内存对齐没有提及,它不属于函数调用范畴之内。我在构造示例时避免了编译器为了内存对齐而生成一些额外的指令,所以文中见不到它的影子。如果你有兴趣可以通过网络去了解与它相关的内容。

相关资源

书籍:

《深入理解计算机系统》(第三版)《汇编语言》(王爽第三版)

公开课:

《编程范式》(斯坦福公开课)绘图工具

文中所有图片都使用了excalidraw作为绘图工具,这是一款非常棒的在线绘图工具,它提供了不同风格的绘制模式。

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

php介绍

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

Tags 标签

php后端node.jspythonc

扩展阅读

加个好友,技术交流

1628738909466805.jpg