我想在低层次上了解如何将输入提供给函数。函数运行后到底会发生什么?例如,请考虑以下情况:
int foo(int t1, int t2)
{
Function defintion goes here
}
然后在代码中
main()
{
.
.
int a= foo(23, 24);
.
.
}
假设代码编译成功,我们得到一个二进制文件,即与我们的高级源代码相对应的 .exe 文件。我想了解内部函数的输入处于什么级别,以及当我们双击此 .exe 文件时到底会发生什么。点击.exe后,哪些软件/硬件会发挥作用?如果有人能给我一个简短的描述,我将不胜感激。
根据要求
操作系统:Windows CPU:英特尔酷睿2双核
最佳答案
就函数调用而言,首先,文字 23
和 24
被加载到 CPU 中的特定寄存器(用于函数参数的寄存器)。然后,您的代码将跳转到函数 foo
所在的部分。
foo
从上述寄存器中读取数据以访问 t1
和 t2
,计算返回值,并将该值存储在另一个寄存器中。然后,foo 跳回到 main 中调用它的地方。
然后,Main 从存储 foo 返回值的寄存器中读取内容,并将该值放入变量 x
中。
这是对函数调用所发生情况的高级描述。更详细的解释可能无法从堆栈溢出帖子中得到(但也许不是)。
关于c - 函数输入分配的低级描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15363797/