汇编语言之堆栈框架
堆棧框架(stack frame)也稱活動框架(activation record),他是為傳遞的參數、子例程的返回地址、局部變量和保存的寄存器保留的堆棧空間。
堆棧框架的創建步驟:
(1)如果有傳遞的參數,則壓入堆棧
(2)子例程被調用,子例程的返回地址壓入堆棧
(3)子例程開始執行時,EBP被壓入堆棧
(4)EBP設為ESP的值,ESP減去一個數值,EBP就被作為尋址所有子例程參數的基址指針使用了
(5)如果有局部變量,ESP減去一個數值,以便在多站上為局部變量保存空間
(6)如果任何寄存器需要保存,則壓入堆棧
堆棧結構的結構受程序的內存模式及參數傳遞約定的直接影響。
1、堆棧參數
被調用的子例程訪問調用子例程時壓入堆棧的參數。在進行子例程調用是在多站上壓入了兩類參數:
值引用(變量和常量的值)
引用參數(變量的地址)
值傳遞:在堆棧上壓入變量值的一份副本的方式傳遞參數
push va1 push va2 call AddTwo傳遞引用:傳遞的參數是一個對象的地址
push OFFSET va1 push OFFSET va2 call swap傳遞數組:傳遞數組時,總是傳遞引用
.data array DWORD 50 DUP(?) .code push OFFSET array call ArrayFill總結
- 上一篇: EIgen:Matricx和vector
- 下一篇: 32位处理器的寄存器介绍