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