2011-05-28 77 views
1

可能重复:
Why do stacks typically grow downwards?为什么堆栈增长到较低的地址?

每个体系都我所看到的,堆在推值给出更低的内存地址的方式增长。这有什么理由吗?

+0

非常有趣的问题!几十年前,当堆栈首次被发明时,RAM很昂贵并且供不应求。所以堆栈设计者为了牧养有价值的RAM,向下堆放堆栈。这意味着每当有东西被推入堆栈时,就会使用越来越少的RAM。 – 2011-05-28 20:55:03

+0

@Pete:开玩笑吧?我认为 – sehe 2011-05-28 21:17:56

回答

1

最低的地址总是保留给特殊的寄存器。选择最低值可确保无论微型版本(可变数量的RAM)如何,特殊寄存器始终位于同一位置。

通过在最顶端启动堆栈,您只需要知道一件事。顶部地址。

它可以分解两个独立的设计问题。保留的寄存器放置和堆栈原点。

+0

我建议你扩大你的答案并增加一点清晰度。 阅读完您的短语后 “最低地址始终保留给特殊寄存器”。汇编语言的新手今天问我“如何使用RAM作为寄存器”(显然你不能 - 寄存器在CPU上,STACK是RAM中的一个区域,RAM不在CPU上)。 – Ted 2014-02-22 14:08:02