关于函数调用堆栈的问题。
在看深入理解计算机系统中有一段不是很明白,请高手解答。
若有如下函数 int test(int x, int y, int z)
则参数xyz分别存放在存储器中相对于%ebp中地址偏移8,12,16的地方?
我的理解:
由于栈是向低位扩展的,所以从上可以得出,文中的参数入栈的顺序是从左到右的。不是我们一般所采用的从右到左,这个跟调用约定有关。不明白的地方是,第一个参数入栈前的8个字节是啥?我所知道的是,函数调用时,会先将下一条指令压栈,使得函数在返回时,能继续往下执行。还有另外四个字节是什么呢?