首页
社区
课程
招聘
汇编函数调用中bp和sp是指什么?
2006-5-20 11:16 17494

汇编函数调用中bp和sp是指什么?

2006-5-20 11:16
17494
bp是指栈底指针吗?
sp是栈顶指针吗?
子函数调用的时候,系统会自动在栈中保存这两个指针吗?

有人讲一下, 用栈来传递参数, 栈中的详细情况吗?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 2367
活跃值: (756)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
小虾 10 2006-5-20 12:41
2
0
bp为基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址
sp是栈顶指针,它每次指向栈顶。
每次子函数调用时,系统在开始时都会保存这个两个指针并在函数结束时恢复sp和bp的值。像下面这样:
在函数进入时:
push bp  //保存bp指针
mov bp,sp //将sp指针传给bp,此时bp指向sp的基地址。这个时候,如果该函数有参数,则[bp+4]则是该子函数的第一个参数,[bp+6]则是该子函数的第二个参数,以此类推,有多少个参数则[bp+4+2^n]。
.....
.....
函数结束时:
mov sp,bp //将原sp指针传回给sp
pop bp  //恢复原bp的值。
ret  //退出子函数
雪    币: 194
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fangxin 2006-5-20 14:33
3
0
哦, 我再去看下书, 谢谢啦
游客
登录 | 注册 方可回帖
返回