x86上为什么C语言调用一个函数要先把参数压栈,之后才是返回地址

2024-12-13 08:58:58
推荐回答(2个)
回答1:

调用函数时,实际上是从某一函数跳转到了被调用函数,这个时候,程序当前运行时所用的参数如果不进行保存的话,那么当执行完被调用函数跳转回原先的函数时,缺少必要的参数,程序就无法正常执行。因此,在调用函数之前,需要先保存现场信息,即先把参数压栈,然后再返回地址

回答2:

因为将参数的值或者地址压入栈中,通过栈传递参数进行虚实结合是最简单、最容易实现的方式,多数编译系统都采用这种方式。