本章主要在詳細介紹副程式(procedure)進階相關問題.副程式的設計通常有參數,同時各個副程式中也可以有區域變數.參數分為register parameters跟stack parameters,利用暫存器來傳參數,我們已在第六章介紹過,本章則著重在利用推疊來傳遞參數.參數傳遞有分為call by value(傳值)及call by reference(傳址)兩種,因此呼叫副程式用(CALL或INVOKE)時,有時要加ADDR有時不用.
更重要的一點則是堆疊因副程式呼叫所產生的變化,也就是所謂的stack frame,當呼叫一個副程式時,parameters, return address, ebp, local variable, used registers會依序放入堆疊,此處ebp暫存器扮演存取參數及區域變數的參考指標,因而所有副程式中使用到的變數及區域變數都會轉成[ebp- 12], [ebp-8], [ebp+4], [ebp+8]等記憶位置.
學習提要
1. Stack parameter & stack frame
Pass by value, pass by reference
Function of ebp
2. Difference between
CALL vs. INVOKE
OFFSET vs. LEA
沒有留言:
張貼留言