系统是否从高 - 低>低或反向分配内存?

时间:2011-03-28 07:52:58

标签: stack cpu-architecture

IIRC应该是high->low,但根据此图片,它是low->high

enter image description here

我现在很困惑,情况就是这样?

似乎代码也是从low->hight执行的:

0x0000000000400498 <main+0>:    push   %rbp
0x0000000000400499 <main+1>:    mov    %rsp,%rbp
0x000000000040049c <main+4>:    sub    $0x10,%rsp
0x00000000004004a0 <main+8>:    movl   $0x6,-0x4(%rbp)

1 个答案:

答案 0 :(得分:2)

在运行Windows的最流行的体系结构Intel x86 / x64上,堆栈“增长”到较低的地址。即,推入堆栈涉及从堆栈指针(ESP)中减去,并从堆栈弹出涉及添加到堆栈指针。

在您的示例中,堆栈从顶部到底部增长。这是函数的序言,它使用SUB指令为局部变量分配堆栈空间。您可能会将堆栈与存储程序的内存混淆 - 在该区域中,CPU按顺序执行指令,从低地址到高地址,直到遇到分支(例如JMP)指令