在汇编层面:实参的值是如何传递给形参的?
重提老话题了,不讨论都知道的形参和实参的关系,只讨论,在实际程序运行过程中,当调用一个带参数的函数时,形参的地址被划分后,实参的值是如何被赋给形参的呢?我在网上查询到的说法是:在PC指针跳转到被调用函数之前,编译器会自动添加代码将所有实参值依次压入栈,而进入被调用函数后,该函数会将参数值依次出栈(逆序),赋值给形参空间。
但是在我工作中用的PIC16系列单片机中,堆栈空间是一定的,不可更改,并且很小,个人感觉如果这样的话,我编写的一些多层调用 ,带很U32参数的系统,将会导致堆栈溢出,但实际上并没有,这是怎么回事呢?
到底实参的值是怎么传递给形参的呢?是不是在嵌入式系统里,不同的处理器对应的编译器处理方式不一样呢?