/Qspectre-load

Her yük yönergesi için serileştirme yönergelerinin derleyici oluşturmasını belirtir. Bu seçenek /Qspectre bayrağını genişletir ve yüklemelere göre olası kurgusal yürütme yan kanal saldırılarına karşı azaltılır.

Sözdizimi

/Qspectre-load

Açıklamalar

/Qspectre-load , derleyicinin bellekten gelen yükleri algılamasına ve sonradan serileştirme yönergeleri eklemesine neden olur. ve CALLdahil olmak üzere RET belleği yükleyen denetim akışı yönergeleri bir yüke ve denetim akışı aktarımına bölünür. Yükün korunduğundan emin olmak için yükün ardından bir LFENCE eklenir. Derleyicinin yönerge gibi denetim akışı yönergelerini jmp bölemediği durumlar vardır, bu nedenle alternatif bir azaltma tekniği kullanır. Örneğin, derleyici burada gösterildiği gibi LFENCE eklemeden önce hedefi yıkıcı olmayan bir şekilde yüklemeye yönelik yönergeler ekleyerek hafifletir jmp [rax] :

    xor rbx, [rax]
    xor rbx, [rax]  ; force a load of [rax]
    lfence          ; followed by an LFENCE
    jmp [rax]

/Qspectre-load tüm yüklerin tahminini durdurduğundan performans etkisi yüksektir. Azaltma her yerde uygun değildir. Koruma gerektirmeyen performans açısından kritik kod blokları varsa, kullanarak __declspec(spectre(nomitigation))bu azaltmaları devre dışı bırakabilirsiniz. Daha fazla bilgi için bkz . __declspec spectre.

/Qspectre-load seçeneği varsayılan olarak kapalıdır ve tüm iyileştirme düzeylerini destekler.

/Qspectre-load seçeneği Visual Studio 2019 sürüm 16.5 ve sonraki sürümlerde kullanılabilir. Bu seçenek yalnızca x86 ve x64 işlemcileri hedefleyen derleyicilerde kullanılabilir. ARM işlemcilerini hedefleyen derleyicilerde kullanılamaz.

Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.

  2. Yapılandırma Özellikleri>C/C++>Kod Oluşturma özellik sayfasını seçin.

  3. Spectre Risk Azaltma özelliği için yeni bir değer seçin. Değişikliği uygulamak için Tamam'ı seçin.

Bu derleyici seçeneğini program üzerinden ayarlamak için

Ayrıca bkz.

/Qspectre
/Qspectre-jmp
/Qspectre-load-cf
/Q seçenekleri (Düşük Düzeyli İşlemler)
MSVC derleyici seçenekleri
MSVC derleyicisi komut satırı söz dizimi