Время активации процедуры - PullRequest
0 голосов
/ 03 мая 2011

Является ли время активации процедуры частью времени компиляции, при котором выполняется подготовка к вызовам функций?

Или это часть времени выполнения, когда функция фактически вызывается?

(хотя и не уверен, я опираюсь на второй вариант)

1 Ответ

1 голос
/ 03 мая 2011

Вы, вероятно, имеете в виду, как вызывается функция. Я предполагаю, что вы хотите знать, как аргументы передаются, копируются и т. Д.

Каждая функция имеет «соглашение о вызовах», которое определяет, как должна вызываться функция. Это процесс, при котором программа помещает аргументы в стек, сохраняет текущее местоположение инструкции в вызывающей функции и переходит к первой инструкции вызываемой функции. Кроме того, соглашение о вызовах определяет, как вернуться к вызывающей функции и как сохранить возвращаемое значение. То, как это будет сделано, будет зависеть от платформы и зависит от соглашения о вызовах, используемого для данной функции.

В соответствии с соглашением о вызовах компилятор генерирует код для выполнения правильных шагов для вызова функции. Этот код будет выполняться во время выполнения для выполнения вызова. Вы можете прочитать больше о соглашениях о вызовах x86 в Википедии здесь соглашения о вызовах x86 .

...