为什么当你将一个值压入堆栈时,ESP寄存器减少(而不是增加),当你弹出一个值时,ESP寄存器增加(而不是减小) ?这一点对我来说很直观。ASM - 推动/弹出
2
A
回答
6
这就是因为这种方式堆栈“从上到下”增长,反对堆,这是分配在自下而上。
在地址空间有限的架构上,这是一个设计决策,您可以更加灵活地使用它们 - 只有分配的内存区域的总和不能超过某个限制。
现在堆栈和堆地址空间总是保存在独立的内存区域,但他们决定保持向后堆栈。
1
这或多或少是任意的设计选择。如果堆栈指针在推动时递增并且在弹出时递减,则堆栈将同样适用。在某些语言中,文字是从左到右而不是从左到右书写的,而具体的方向并不能使语言更好或更差。
1
对于一个单一的内存系统,现在仍然存在于程序员面临的许多环境中,您可能会从低地址向高地址增长堆栈,并且堆栈从内存高地址的顶端向下逐渐降低地址,最大限度地利用该内存而不会发生碰撞。如果他们都长大了,就需要让他们以一种痛苦和丑陋的方式跳跃,或者尽管拥有可用的记忆,但其中一个或另一个将受到限制。在许多处理器上,您可以自由地重写malloc或创建自己的堆栈,并使堆栈长大(某些指令集可以任意选择,某些方式无需额外的努力就可以),堆堆放下来。尽管如此,尽管如此,堆栈还是会堆积起来并堆积起来。
相关问题
- 1. 推动和弹出反应原生
- 2. 推动和弹出的手臂
- 3. 推动和弹出视图控制器 - 动画
- 4. 内联asm:推函数参数
- 5. 推动堆栈参考开始使用ASM生成的类
- 6. UINavigationController弹出/推送UITableViewController仅适用于动画:NO
- 7. Z3解决方案Z3_parse_smtlib2_file - Z3 C API推动弹出
- 8. iOS 8:UINavigationController弹出没有动画,然后推
- 9. jquery移动弹出ui弹出屏幕不滚动时滚动
- 10. 黑莓推送屏幕没有弹出
- 11. “弹出”后无法推送viewController
- 12. CUDA堆栈推送和弹出
- 13. 阵列推红宝石弹出
- 14. 从堆栈弹出而没有推入
- 15. Fancybox自动弹出
- 16. ASM,与ASM
- 17. 推土机不能与弹簧启动
- 18. 弹性定位/滚动问题弹出
- 19. Android弹出活动堆栈
- 20. 拖动WPF弹出控件
- 21. InAppSettingsKit自动弹出UINavigationController?
- 22. 道场弹出自动
- 23. jQuery弹出框动画
- 24. jQuery弹出窗口滚动
- 25. 弹出显示滚动
- 26. 弹出的滚动条
- 27. iPhone视图弹出动画?
- 28. 创建弹出式动画
- 29. jquery有动画弹出
- 30. 移动弹出到前台
有几次,我不得不使用一个堆栈,它*向上增长,* *对我来说非常直观。 – harold 2012-02-28 09:20:40