为啥堆栈会增长到较低的地址? [复制]
Posted
技术标签:
【中文标题】为啥堆栈会增长到较低的地址? [复制]【英文标题】:Why stack grows to lower addresses? [duplicate]为什么堆栈会增长到较低的地址? [复制] 【发布时间】:2011-09-04 02:07:58 【问题描述】:可能重复:Why do stacks typically grow downwards?
我见过的每一个架构,堆栈都在以推送值被赋予较低内存地址的方式增长。有什么原因吗?
【问题讨论】:
非常有趣的问题!几十年前首次发明堆栈时,RAM 价格昂贵且供不应求。因此,堆栈设计者为了管理宝贵的 RAM,将堆栈向下扩展。这意味着每次将某些内容压入堆栈时使用的 RAM 越来越少。 @Pete:开玩笑吧? 可用的内存越来越少我猜 【参考方案1】:最低地址总是为特殊寄存器保留。选择最低可确保无论 micro 版本(可变数量的 ram)如何,特殊寄存器始终位于同一位置。
通过从最顶部开始堆栈,您只需要知道一件事。顶部地址。
它可以解耦两个独立的设计问题。保留的寄存器放置和堆栈来源。
【讨论】:
我建议您扩展您的答案并增加一点清晰度。在阅读了您的短语“最低地址始终保留给特殊寄存器”之后。今天一个汇编语言的新手问我“如何将 RAM 用作寄存器”(显然你不能——寄存器在 CPU 上,STACK 是 RAM 中的一个区域,而 RAM 不在 CPU 上)。以上是关于为啥堆栈会增长到较低的地址? [复制]的主要内容,如果未能解决你的问题,请参考以下文章