[問題] funtion、address、instruction的關係

作者: NoTeXactLy (NoTeXactLy)   2014-07-03 18:19:06
以下是書本的句子:
When a program reaches the function call instruction, the program stores the
memory address of the instruction immediately following the function call,
copies function arguments to the stack(a block of memory reserved for that
purpose), jumps to the memory location that marks the beginning of the
function, executes the instructon whose address it saved.
出處:
http://tinyurl.com/o6xo4bd
C++ primer plus
books.google.com
請問
function call instruction、instruction、function call這三者指同樣東西嗎?
而function是指function definition嗎?
謝謝
作者: tjjh89017 (伊達政宗)   2014-07-03 19:08:00
這看起來是組合語言的東西function call inst => asm: call some_func
作者: carylorrk (carylorrk)   2014-07-03 21:30:00
address of function call instruction push to stack是runtime 做的事,不是 compile time簡單來說這句就是在說每次執行到 function call 指令時會先記下 function return 回來時的位置,也就是當初你call function 跳走的下一條指令
作者: azureblaze (AzureBlaze)   2014-07-03 23:05:00
因為不見得要放stack 雖然一般都放stack
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-07-03 23:47:00
有創意。身為一個程式修理員,多找幾本書看也很合理且合邏輯書上沒說to stack就咬死一定沒to stack,又不是背六法。果然是背六法的。
作者: Killercat (殺人貓™)   2014-07-04 18:32:00
function arguments放的位置並沒有明確定義名稱甚至有的還是丟到registry做pass的他唯一的名稱就叫作Function Frame居泥在他是不是stack...似乎有點搞錯方向了你這東西我只能跟你說 位置頗微妙 你要先搞懂stack/heap怎麼長的 比較有這種感覺就是...另外規格也沒有指名function frame要丟再哪裡 編譯器可以自己決定的
作者: witchang   2014-07-06 01:29:00
放不放stack要看平台的Call Convention(呼叫慣例)請查網.functionCall ins 一般是跳躍指令,所以跳之前將引數搬到Reg或Stack是編譯器的事情並非Runtime~跳躍指令會紀錄返回位置到rpc,return的asm會從rpc調回回去後執行的位址~

Links booklink

Contact Us: admin [ a t ] ucptt.com