程序激活时间是编译时间的一部分,从而为函数调用做准备吗?
或者它是实际调用函数时运行时的一部分吗?
(虽然不确定,我正在关注第二个选项)
答案 0 :(得分:1)
您可能指的是如何调用函数。我假设你想知道如何传递,复制等参数。
每个函数都有一个“调用约定”,它指定如何调用函数。这是程序将参数放在堆栈上,将指令的当前位置保存在调用函数中,然后跳转到被调用函数的第一条指令的过程。此外,调用约定指定如何返回到调用函数以及如何保存返回值。如何完成这将是特定于平台的,并取决于给定函数使用的调用约定。
基于调用约定,编译器发出代码以执行调用函数的正确步骤。此代码将在运行时执行以执行调用。您可以在此处了解有关x86在维基百科上的调用约定的更多信息x86 calling conventions。