BP指针和SP指针的区别?
CPU寄存器组中,指针寄存器BP和SP有什么区别?是不是BP指针可以访问堆栈中的任何数据,而SP指针只可以访问栈顶数据?...
CPU寄存器组中,指针寄存器BP和SP有什么区别?是不是BP指针可以访问堆栈中的任何数据,而SP指针只可以访问栈顶数据?
展开
4个回答
2015-12-09 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
bp:基址寄存器(stack pointer),一般在函数中用来保存进入函数时的sp的栈顶基址
BP: 基数指针寄存器BP(base pointer)是一个寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到
SP,BP一般与段寄存器SS 联用,以确定堆栈寄存器中某一单元的地址,SP用以指示栈顶的偏移地址,而BP可 作为堆栈区中的一个基地址,用以确定在堆栈中的操作数地址。
bp为基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址
每次子函数调用时,系统在开始时都会保存这个两个指针并在函数结束时恢复sp和bp的值。如下
在函数进入时:
push bp // 保存bp指针
mov bp,sp // 将sp指针传给bp,此时bp指向sp的基地址。
// 这个时候,如果该函数有参数,则[bp + 2*4]则是该子函数的第一个参数,[bp+3*4]则是该子函数的 第二个参数,以此类推,有多少个参数则[bp+(n-1)*4]。
.....
.....
函数结束时:
mov sp,bp // 将原sp指针传回给sp
pop bp // 恢复原bp的值。
ret // 退出子函数
BP: 基数指针寄存器BP(base pointer)是一个寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到
SP,BP一般与段寄存器SS 联用,以确定堆栈寄存器中某一单元的地址,SP用以指示栈顶的偏移地址,而BP可 作为堆栈区中的一个基地址,用以确定在堆栈中的操作数地址。
bp为基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址
每次子函数调用时,系统在开始时都会保存这个两个指针并在函数结束时恢复sp和bp的值。如下
在函数进入时:
push bp // 保存bp指针
mov bp,sp // 将sp指针传给bp,此时bp指向sp的基地址。
// 这个时候,如果该函数有参数,则[bp + 2*4]则是该子函数的第一个参数,[bp+3*4]则是该子函数的 第二个参数,以此类推,有多少个参数则[bp+(n-1)*4]。
.....
.....
函数结束时:
mov sp,bp // 将原sp指针传回给sp
pop bp // 恢复原bp的值。
ret // 退出子函数
展开全部
指针寄存器包括堆栈寄存器SP(stack pointer)和基数指针寄存器BP(base pointer),变
值寄存器包括源变址寄存器SI(source index)和目的变值寄存器DI(destination index)。这
4个寄存器都是16位寄存器,这些寄存器在运算过程中也可以用来存放操作数(只能
以字为单位),但经常的用途是在段内寻址时提供偏移地址,SP,BP一般与段寄存器SS
联用,以确定堆栈寄存器中某一单元的地址,SP用以指示栈顶的偏移地址,而BP可
作为堆栈区中的一个基地址,用以确定在堆栈中的操作数地址。SI,DI一般与段寄存器
DS联用,以确定数据段中某一存储单元的地址,SI,DI具有自动增量和自动减量的功能,
这一点使在串操作指令中用做变址非常方便,SI作为隐含的源变址DS联用,DI作为
隐含的目的变址和ES连用,从而达到在数据段和附加段中寻址的目的
值寄存器包括源变址寄存器SI(source index)和目的变值寄存器DI(destination index)。这
4个寄存器都是16位寄存器,这些寄存器在运算过程中也可以用来存放操作数(只能
以字为单位),但经常的用途是在段内寻址时提供偏移地址,SP,BP一般与段寄存器SS
联用,以确定堆栈寄存器中某一单元的地址,SP用以指示栈顶的偏移地址,而BP可
作为堆栈区中的一个基地址,用以确定在堆栈中的操作数地址。SI,DI一般与段寄存器
DS联用,以确定数据段中某一存储单元的地址,SI,DI具有自动增量和自动减量的功能,
这一点使在串操作指令中用做变址非常方便,SI作为隐含的源变址DS联用,DI作为
隐含的目的变址和ES连用,从而达到在数据段和附加段中寻址的目的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sp指针是栈顶指针,BP指针是栈内的某一单元的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
受教了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询