2011-05-03 38 views
0

过程激活时间是编译时间的一部分,从而为函数调用做准备?过程激活时间

或者当函数被实际调用时它是运行时的一部分吗?

(虽然不能确定,我对铰链的第二个选项)

+5

“程序激活时间”是什么意思? – unwind 2011-05-03 13:31:56

+0

@unwind,我猜(他)想知道如何调用一个函数 – 2011-05-03 13:50:04

回答

1

你可能指的是功能是如何被调用。我假设你想知道参数如何通过,复制等。

每个函数都有一个“调用约定”,它指定如何调用函数。这是程序将参数放置在堆栈上,将指令的当前位置保存在调用函数中,并跳转到被调用函数的第一条指令。此外,调用约定还指定如何返回到调用函数以及如何保存返回值。如何做到这一点将是特定于平台的,并且取决于给定函数使用的调用约定。

根据调用约定,编译器会发出代码以执行调用该函数的正确步骤。此代码将在运行时执行以执行呼叫。您可以在这里阅读更多关于x86的调用约定的文章x86 calling conventions