0

根据维基百科:https://en.wikipedia.org/wiki/Red_zone_(computing)

红色区域是函数堆栈帧中的一个固定大小的区域,位于当前堆栈指针下方(对于下推堆栈),该堆栈指针被保留且可以安全使用。它最常用于叶函数(不调用其他函数的函数)中,用于分配额外的堆栈内存,无需移动堆栈指针,从而节省了一条指令。

专注于最后一句话,我完全不同意。rsp 是框架的结尾这一事实只是为了让我们更容易(如果我们想手动编写程序集或作为一种约定)。所以我们可以这样做:- at&t 语法-

moveq $5, -200(%rsp)

根本不使用红色区域,那么红色区域有什么帮助(它不会像声称的那样保存呼叫)?

4

0 回答 0