C代码转变为等价的汇编代码,有一汇编语句想不通,讨论一下
C代码:int f(int a, char b) {}
void main()
{
int a=0;
char b = ' ';
int g = f(a, b);
}
int g=f(a, b);这一C语句等价的汇编为:
push b //将参数b压栈
push a //将参数a压栈
call f() //调用函数f()
add sp, 4 //这一句没法对应呀???
mov g, register a //将寄存器a中的值返回给变量g
add sp, 4这一句,我奇怪它为何要把栈指针加4, 栈指针的操作不都由call指令完成吗?