2007年5月22日 星期二

Assembly Chapter 8 Overview

本章主要在詳細介紹副程式(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

沒有留言: