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;
}
Завершение блока, относящегося только к системам Майкрософт
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по