这是一篇讲述函数调用原理的文章,通过大量的示意图从比较基础的概念开始阐述函数调用时堆栈的完整变化过程,同时还会通过具体例子来分析在 X-64 平台上函数调用在汇编级的表示,从而深刻理解函数调用原理。最后会提供几个例子来发现 C 语言函数栈帧的一些有意思的行为。
全文将带领你领略函数与栈的魅力,文章提供了gitbook的阅读方式。 如果你觉得对你有帮助,可以来到文章的github 仓库点个 star 啊!
文中有一个重要的概念内存对齐
没有提及,它不属于函数调用范畴之内。我在构造示例时避免了编译器为了内存对齐
而生成一些额外的指令,所以文中见不到它的影子。如果你有兴趣可以通过网络去了解与它相关的内容。
书籍:
公开课:
文中所有图片都使用了excalidraw作为绘图工具,这是一款非常棒的在线绘图工具,它提供了不同风格的绘制模式。