Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核

帖子发起人: sPhinX   发起时间: 2010-08-04 10:13 上午   回复: 3

Print Search
帖子排序:    
   2010-08-04, 10:13 上午
s5689412 离线,最后访问时间: 2015/10/10 9:37:32 sPhinX

发帖数前25位
注册: 2008-06-28
发 贴: 50
为什么栈是向下增长的?
Reply Quote
看了几天的书,这个地方有点想不通,一般觉得都是从低向高,从下向上这样的增长,当然从高往低理论也是可以的,只是有点别扭,但是为什么要选择这个比较别扭的方式,应该是有理由的吧。

看了一些资料,有些和我想的一样,就是说想下增长更容易出问题,更容易让问题尽早的出现,但是向上增长到栈溢出的时候不是一样要出问题吗?或者说如果上面没有其他程序分配的内存,就不容易出问题?

虽然是个小问题,但是没有彻底想通总觉得有个疙瘩,所以请教众高人,还请不吝赐教。
IP 地址: 已记录   报告
   2010-08-04, 23:13 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 为什么栈是向下增长的?
Reply Quote
从编程方便的角度来考虑就是很自然的事。栈指针总是指向当前的栈顶,在栈上分配空间时,只需要把栈指针作减法
SP=SP-n
减了之后,栈指针指向新的栈顶,而且它的值恰好又是所分配空间的起点,可以方便的用SP的值索引刚分配的空间。

假设栈是反方向生长的,那么分配空间时要对SP作加法
SP=SP+n
要索引这个新分配的空间时,要SP-n才能指向新分配空间的起点...

一家之言,或许还有其它原因:-)
IP 地址: 已记录   报告
   2010-08-05, 16:29 下午
s5689412 离线,最后访问时间: 2015/10/10 9:37:32 sPhinX

发帖数前25位
注册: 2008-06-28
发 贴: 50
Re: 为什么栈是向下增长的?
Reply Quote
很有道理啊,不光是方便的问题,应该说是效率更高了吧,少了一个减法操作呢,是不是从一个侧面说明了那些设计操作系统的人在提高效率方面无所不用其极啊?呵呵
IP 地址: 已记录   报告
   2011-01-26, 08:59 上午
lee0ne 离线,最后访问时间: 2013/4/21 4:33:51 lee0ne

发帖数前75位
注册: 2010-12-31
发 贴: 16
Zip it! [:#] Re: 为什么栈是向下增长的?
Reply Quote
这个貌似跟cpu架构有关吧?跟操作系统没啥关系,操作系统还是得根据cpu架构来设计。。。
IP 地址: 已记录   报告
高端调试 » 内核探秘 » Windows内核 » 为什么栈是向下增长的?

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.