spectre

Specyficzne dla firmy Microsoft

Informuje kompilator, aby nie wstawiał instrukcji bariery wykonywania spekulatywnego spectre wariantu 1 dla funkcji.

Składnia

__declspec( spectre(nomitigation) )

Uwagi

Opcja /Qspectre kompilatora powoduje, że kompilator wstawia instrukcje bariery wykonywania spekulatywnego. Są one wstawiane, gdzie analiza wskazuje, że istnieje luka w zabezpieczeniach spectre variant 1. Określone instrukcje emitowane zależą od procesora. Chociaż te instrukcje powinny mieć minimalny wpływ na rozmiar kodu lub wydajność, mogą wystąpić przypadki, w których kod nie ma wpływu na lukę w zabezpieczeniach i wymaga maksymalnej wydajności.

Analiza ekspertów może określić, że funkcja jest bezpieczna od wady obejścia w wariantie spectre 1. W takim przypadku można pominąć generowanie kodu ograniczania ryzyka w ramach funkcji, stosując __declspec(spectre(nomitigation)) do deklaracji funkcji.

Uwaga

/Qspectre spekulacyjne instrukcje bariery wykonywania zapewniają ważną ochronę zabezpieczeń i mają niewielki wpływ na wydajność. Dlatego zaleca się, aby nie pomijać ich poza rzadkimi przypadkami, gdy wydajność funkcji odgrywa krytyczną rolę i wiadomo, że funkcja jest bezpieczna.

Przykład

Poniższy kod pokazuje, jak używać polecenia __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;
}

END Microsoft Specific

Zobacz też

__declspec
Słowa kluczowe
/Qspectre