函数参数从右向左入栈原因
风中舵手
个性、快乐、勇气
展开
-
C语言中函数参数入栈的顺序
C语言中函数参数入栈的顺序先通过一个小程序来看一看:#includevoid foo(int x, int y, int z){printf("x = %d at [%X]n", x, &x);printf("y = %d at [%X]n", y, &y);printf("z = %d at [%X]n", z, &z);}int main(int a转载 2016-08-02 10:47:19 · 339 阅读 · 0 评论 -
为什么参数从右到左进栈
原因是由于可变长参数。如今GCC已经支持按声明顺序进栈,这里分析传统的函数调用入栈。前提了解函数调用,所涉及栈帧分配,见下图1:图1:函数调用栈帧这个图2也有意思,把函数调用之间的关系展示了出来。图2:函数调用关系理论分析假设现在有函数f,固定参数m个,可变参数n(未知)个,假设所有参数都是32位整数,如果不是整数转载 2016-08-02 10:48:40 · 919 阅读 · 0 评论