spectre
Microsoft 专用
告知编译器不要为函数插入 Spectre 变体 1 推理执行屏障指令。
语法
__declspec( spectre(nomitigation) )
注解
/Qspectre 编译器选项会导致编译器插入推理执行屏障指令。 它们已插入到分析表明存在 Spectre 变体 1 安全漏洞的位置。 发出的特定指令取决于处理器。 虽然这些指令对代码大小或性能的影响应该是最小的,但在某些情况下,代码不受漏洞影响,并且需要最佳性能。
专家分析可以确定函数不会受到 Spectre 变体 1 边界检查绕过缺陷的影响。 在这种情况下,可以通过将 __declspec(spectre(nomitigation))
应用于函数声明来禁止函数中缓解代码的生成。
注意
/Qspectre 推理执行屏障指令提供重要的安全保护,对性能的影响可以忽略不计。 因此,我们建议您不要取消它们,但在以下罕见的情况下除外:函数的性能至关重要,并且已经知道函数是安全的。
示例
下面的代码演示如何使用 __declspec(spectre(nomitigation))
。
// compile with: /c /Qspectre
static __declspec(spectre(nomitigation))
int noSpectreIssues() {
// No Spectre variant 1 vulnerability here
// ...
return 0;
}
int main() {
noSpectreIssues();
return 0;
}
结束 Microsoft 专用