问答题X 纠错
左边的编译器版本:一般只为局部变量分配空间。调用函数前,用若干次pushl指令将参数压栈,返回后用addl$n,%esp一次将所有参数退栈(常数n根据调用前做了多少次pushl来决定)。
右边的编译器版本:除了为局部变量分配空间外,同时还为本函数中出现的函数调用的参数分配空间,并且参数所用空间靠近栈顶。调用函数前,用movl指令将参数移入栈顶,调用结束后无需参数退栈指令。优点是每次函数调用结束后不需要执行addl$n,%esp指令,另外增加优化的可能性。
你可能喜欢
问答题
问答题
在C语言中,如果变量i和j都是long类型,请写出表达式&i和表达式&i−&j的类型表达式。为帮助你回答问题,下面给出一个程序作为提示,它运行时输出1。