2011-05-03 77 views
0

過程激活時間是編譯時間的一部分,從而爲函數調用做準備?過程激活時間

或者當函數被實際調用時它是運行時的一部分嗎?

(雖然不能確定,我對鉸鏈的第二個選項)

+5

「程序激活時間」是什麼意思? – unwind 2011-05-03 13:31:56

+0

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

回答

1

你可能指的是功能是如何被調用。我假設你想知道參數如何通過,複製等。

每個函數都有一個「調用約定」,它指定如何調用函數。這是程序將參數放置在堆棧上,將指令的當前位置保存在調用函數中,並跳轉到被調用函數的第一條指令。此外,調用約定還指定如何返回到調用函數以及如何保存返回值。如何做到這一點將是特定於平臺的,並且取決於給定函數使用的調用約定。

根據調用約定,編譯器會發出代碼以執行調用該函數的正確步驟。此代碼將在運行時執行以執行呼叫。您可以在這裏閱讀更多關於x86的調用約定的文章x86 calling conventions