没错的 它是个指针 你可以任意设置,就是新添加数据的时候 指针以上的就被从新覆盖了
或者这么理解? 自己设定指针后,计算机就认为 你指定的栈顶就是栈顶,栈顶以上就是没数据的,需要的时候直接使用覆盖
指针已下都是有数据的.
这是我的理解
要是我理解错了希望有大神来斧正 帮你顶一下
{:1_1:} 用计算机的思维去理解你就明白了,计算机是不知道栈的范围的,它是通过sp来定位到数据的,有一个空箱子,外面有10本书(1本代表2个字节),入栈sp始终指向栈顶这是不用说的吧,我说出栈的,假如10本书都放到箱子中,那么sp指向栈顶10对吧,
假如sp改成6,那么栈顶就是6,你只要把7,8,9,10忽略掉,因为这些是cpu看不到的地方,cpu只会(sp=sp+2),下一个地方就是5,对于cpu来说sp当前指向的地方就是栈顶,所以说任何时候sp都指向栈顶,自己画个图就明白了,你要知道的一点是数据出栈时cpu只会朝一个方向就是sp=sp+2,
结论:
计算机认为的栈顶是,当前sp指向的地方就是栈顶,因为从当前sp这地方到栈底是表示一个有效栈,计算机知道的栈, 可以,cpu 是不知道栈的范围的,任意时刻sp指向栈顶 可以,你设置ss:sp指向哪里,哪里就是栈顶,
cpu只知道0 1 别的你说了算 可以自己设定栈顶
栈这个机制是由CPU提供的
是的,SP的值可以自己设定,栈也是内存单元中的一部分而已,和其他内存单元没什么区别
当SS:SP处指向哪儿,CPU就把那儿当做栈顶
栈的增长方向是由高地址向低地址
页:
[1]