为什么当您将一个值压入堆栈时,ESP 寄存器会减少(而不是增加),而当您弹出一个值时,ESP 寄存器会增加(而不是减少)?在这一点上,这对我来说是违反直觉的。
最佳答案
那是因为堆栈是从上到下“增长”的,与自下而上分配的堆相反。
在地址空间有限的架构上,这是一个设计决定,您可以更灵活地使用它们 - 只是两个分配的内存区域的总和不能超过特定限制。
如今,堆栈和堆地址空间无论如何都保存在不同的内存区域中,但他们决定保留向后增长的堆栈。
关于assembly - ASM - 推/弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9478625/