递减堆栈指针在堆栈上保留 space 是什么意思?

What does it mean that decrementing the stack pointer reserves space on the stack?

在此上下文中,"reserve" 到底是什么意思?递减堆栈指针如何在堆栈上保留 space?调整堆栈指针寄存器有副作用吗?

"Reserving space" 听起来像是内存分配,但堆栈的内存通常是固定的并预先分配,所以我认为这不是它的意思。

我认为这只是意味着我们告诉其他人不要使用我们的堆栈 space 并且其他人只是读取堆栈指针寄存器并且按照惯例知道它不应该破坏任何高于该寄存器的内容.如果那是对的,那其他人是谁?后续函数调用? OS?

堆栈指针现在稍微低一点这一事实保留了 space。递归调用的函数等将(希望)通过不写入以这种方式保留的内存来尊重保留(没有什么能真正阻止它们,但如果它们这样做,它们就会被破坏)。

堆栈 space 原则上可以写入未以这种方式分配的堆栈,但由于它是免费的,通常不会这样做(特别是它可能不会,也可能不会,生存一个函数调用,它可以很容易地分配它并覆盖它,并且信号处理程序使用这个 space 如果它不是红色区域的一部分),最大的例外是 x64 上的红色区域(不在 Windows) 在叶函数中。

一种分配,它是在固定大小的缓冲区内分配,但是一切也是如此,最终你只能无论如何分配这么多内存。只是比较有限。