汇编语言之堆栈框架

堆栈框架(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值