Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44633
  • 博文数量: 12
  • 博客积分: 480
  • 博客等级: 下士
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-26 23:33
文章分类
文章存档

2010年(12)

我的朋友

分类: LINUX

2010-08-22 23:17:49

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的值。
阅读(6068) | 评论(0) | 转发(0) |
0

上一篇:最简单的启动代码

下一篇:没有了

给主人留下些什么吧!~~