问题标签 [red-zone]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
122 浏览

gcc - 解释堆栈缓冲区下溢报告

今天我们遇到了由 gcc 10.2 && gcc 11 asan 报告的堆栈缓冲区下溢。

查看 asan 的输出,我们发现它指向以下影子字节模式:

在我看来,堆栈左右红色区域之间没有可寻址的字节。请您解释一下在什么情况下会出现这种阴影布局?

0 投票
0 回答
45 浏览

assembly - 为什么我们需要堆栈的红区?

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

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

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

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