VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 42|回复: 4

堆栈的深入探讨……

[复制链接]

2

主题

18

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2020-2-15 21:00:02 | 显示全部楼层 |阅读模式
1.堆栈段和堆栈的对应关系是怎样的?
一个64K大小的堆栈段对应一个64K大小的堆栈,是这样的吗?还是一个64K大小的堆栈段可以对应多个比它小的堆栈?
2.那么又怎样通过SS:SP寻址堆栈呢?
3.堆栈段基地址与栈顶,栈底的关系是怎样的?
回复

使用道具 举报

0

主题

3

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2020-4-17 08:45:02 | 显示全部楼层
一般来说是不是初始化时,ss被载入堆栈段基址,sp被初始化为指向该段的尾端减一字节处,这时该段的尾端既是栈底,sp指向的字节即为栈顶。
个人推断的,我也想知道各种编译器的具体实现方法
回复

使用道具 举报

1

主题

5

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2020-5-7 17:30:01 | 显示全部楼层
个人理解:
一个堆栈段对应一个堆栈,一个任务在同一个时刻只有一个堆栈段。
SS存放堆栈段的选择符,该选择符规定了堆栈的长度,生长方向和限长。SP存放堆栈段的栈底,刚开始的时候栈底地址<=栈顶地址,如果栈里没有数据,那么栈底地址=栈顶地址,否则栈底<栈顶地址
回复

使用道具 举报

2

主题

18

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2020-5-25 11:30:01 | 显示全部楼层
经过我一夜的深思与参阅资料,问题终于解决了……

>1.堆栈段和堆栈的对应关系是怎样的?
一个64K大小的堆栈段对应一个64K大小的堆栈,是这样的吗?还是一个64K大小的堆栈段可以对应多个比它小的堆栈?

堆栈段和堆栈完全对应,堆栈与堆栈段大小相等。

>2.那么又怎样通过SS:SP寻址堆栈呢?

SS*16 + SP

>3.堆栈段基地址与栈顶,栈底的关系是怎样的?

SS*16后得到的基地址就是栈顶,SP指向栈底。

                     致谢:
感谢kaishiba和amiu888朋友的热心参与。
回复

使用道具 举报

1

主题

5

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2020-7-24 21:30:02 | 显示全部楼层
你的理解是在实模式下的,保护模式下需要用到选择符的东西。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2020|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表