spectre

Блок, относящийся только к системам Майкрософт

Указывает компилятору не вставлять инструкции по барьеру выполнения 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;
}

Завершение блока, относящегося только к системам Майкрософт

См. также

__declspec
Ключевые слова
/Qspectre