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 专用

另请参阅

__declspec
关键字
/Qspectre