首页 > 解决方案 > 堆栈和寄存器如何工作?

问题描述

我不明白在递归或正常函数调用期间堆栈和寄存器是如何工作的。函数的参数和语句地址在哪里得到了副本。这本书说编译器为此目的使用堆栈,但为此目的使用寄存器。这是代码

main()
{
int a = 5, b = 2, c;
c = add (a, b);
printf ("sum = %d", c); 
}
 
add(int i, int j)
{
 int sum;  
sum = i + j;
return sum ;  
}  
    

作者说:“在将执行控制权转移到函数 add() 之前,参数 a 和 b 的值被压入堆栈。随后,语句 printf() 的地址被压入堆栈,控制权被转移到 add( )。” 返回地址语句如何工作。控制如何返回调用函数?

标签: cassemblycompilationcpu-registerscalling-convention

解决方案


推荐阅读