标题:下面的程序为什么会栈溢出。
只看楼主
随风的飞叶
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:90
专家分:158
注 册:2015-10-8
得分:0 
以下是引用hu9jj在2015-10-14 07:30:01的发言:

 
debug在执行程序的时候也要用到堆栈的。
debug执行程序时单步中断用到压栈这个我知道,只是还有两个字的内容的改变是什么引起的。还有,执行到第七次压栈时怎么程序就给踢出来了。溢出内容没有看到改变什么原有数据啊。
2015-10-14 07:56
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:20 
这小伙子好执着啊!
1、最前面的数据就是debug单步中断保护现场改写的数据,不过它已经将SP指针值还原,不影响你定义的栈空间大小。
2、溢出的数据根本不会存储,当栈指针为0,再次压栈,栈指针会变为FFFF,此时会产生1号中断,通知栈溢出,SS的值保持不变。

能编个毛线衣吗?
2015-10-14 08:40
随风的飞叶
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:90
专家分:158
注 册:2015-10-8
得分:0 
我第七次压栈会被踢出程序大概明白了。因为数据丢失,无法恢复现场,所以程序崩溃。那么压栈时,ss:fffe的内容也改变了啊,本来全是00的。随着压栈的进行。后面的数据也在变化,就是那五个字的内容会逐次改写的。
2015-10-14 08:55
随风的飞叶
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:90
专家分:158
注 册:2015-10-8
得分:0 
栈溢出不是要进行循环存放的吗,汇编语言不是不对栈顶越界作检查吗
2015-10-14 08:57
随风的飞叶
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:90
专家分:158
注 册:2015-10-8
得分:0 
最后三章看的实在是糊涂,先看c语言去,回头再来学吧,实验实在是做不出来。
2015-10-14 13:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-458138-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.700375 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved