C语言函数调用流程

 2024-02-29 02:06:10  阅读 0

x0,%eax

: 转

: 没有

: 没有

转储结束。

可见-fomit-frame-可以去掉STP。

删除 STP 有哪些缺点?

1)增加调优难度

由于调试器指令中使用了STP,因此没有STP 就无法使用调试指令。

2)降低汇编代码的可读性

访问函数参数和局部变量,没有ebp,只能通过+xx(esp)来访问,两种方式很难区分,降低了程序的可读性。

取消STP有什么好处?

1)节省堆栈空间。

2) 减少了建立和销毁栈帧的指令,简化了代码。

3)释放ebp,将其用作通用寄存器,以增加通用寄存器的数量。

4)以上3点使得程序运行速度更快。

概念六:调用约定和ABI(应用程序二进制接口)。

函数如何找到它的参数?

函数如何返回结果?

函数在哪里存储局部变量?

哪个硬件寄存器是起始空间?

哪些硬件寄存器必须提前保留?

调用约定解决了上述问题。 也是 ABI 的一部分。 因此,遵守相同ABI规范的操作系统使得二进制代码之间的互操作成为可能。

例如:由于Linux和Linux都遵守V的ABI,10提供了直接运行Linux二进制程序的功能。

c语言函数总结

本文通过最简单的C程序介绍以下概念:

STP堆栈帧指针

堆栈堆栈对齐

调用约定和ABI(应用程序二进制接口)

看过《C语言函数调用流程》的人还看过:

1.什么是C语言程序中的函数?

2.C语言中get函数的用法

3.C语言中if函数的用法

4.c语言的使用

5、2015年9月计算机二级C语言高分突破模拟试卷总结

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码