来自维基百科:
在计算中,红色区域是函数堆栈帧中的一个固定大小的区域,超出了该函数不保留的返回地址。被调用函数可以使用红色区域来存储局部变量,而无需修改堆栈指针的额外开销。这个内存区域不能被中断/异常/信号处理程序修改。System V 使用的 x86-64 ABI 要求有一个 128 字节的红色区域,它直接在返回地址之后开始,包括函数的参数。OpenRISC 工具链假设有一个 128 字节的红色区域。
%rsp 指向的位置之外的 128 字节区域被认为是保留的,不应被信号或中断处理程序修改。因此,函数可以将此区域用于函数调用之间不需要的临时数据。特别是,叶函数可以将这个区域用于它们的整个堆栈帧,而不是在序言和尾声中调整堆栈指针。这个区域被称为红色区域。
给定这两个引号,红色区域是堆叠返回地址 上方还是堆叠返回地址下方?
由于这个红色区域是相对于 的
RSP
,它是否随每个 向下移动,是否随每个push
向上移动pop
?