问答题

简答题

一个C语言的函数如下:

下面左右两边的汇编代码是两个不同版本GCC编译器为该函数产生的代码。左边的代码在调用func之前将参数压栈,调用结束后将参数退栈。右边代码对参数传递的处理方式没有实质区别。请叙述右边代码对参数传递的处理方式并推测它带来的优点。

【参考答案】

左边的编译器版本:一般只为局部变量分配空间。调用函数前,用若干次pushl指令将参数压栈,返回后用addl$n,%esp......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)