Aracılığıyla paylaş


/Qspectre-load-cf

Yük içeren her denetim akışı yönergesi için derleyici oluşturma serileştirme yönergelerini belirtir. Bu seçenek, /Qspectre-load seçeneği tarafından yapılan azaltmaların bir alt kümesini gerçekleştirir.

Sözdizimi

/Qspectre-load-cf

Açıklamalar

/Qspectre-load-cf derleyicinin bellekten yüklenen , RETve CALL denetim akışı yönergelerini algılamasına JMPve yüklemeden sonra serileştirme yönergeleri eklemesine neden olur. Mümkün olduğunda, bu yönergeler bir yük 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 JMP yönergeleri 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-cf Denetim akışı yönergelerindeki tüm yüklerle ilgili spekülasyonu 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.

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

/Qspectre-load-cf 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
/Q seçenekleri (Düşük düzeyli işlemler)
MSVC derleyici seçenekleri
MSVC derleyicisi komut satırı söz dizimi