/Qspectre-load

Especifica la generación por parte del compilador de instrucciones de serialización para cada instrucción de carga. Esta opción amplía la marca /Qspectre, mitigando los posibles ataques de canal lateral de ejecución especulativa basados en cargas.

Sintaxis

/Qspectre-load

Comentarios

/Qspectre-load hace que el compilador detecte las cargas de memoria e inserte instrucciones de serialización después de ellas. Las instrucciones de flujo de control que cargan memoria, incluidas RET y CALL, se dividen en una carga y una transferencia de flujo de control. La carga va seguida de LFENCE para asegurarse de que la carga está protegida. Hay casos en los que el compilador no puede dividir las instrucciones de flujo de control, como la instrucción jmp, por lo que usa una técnica de mitigación alternativa. Por ejemplo, el compilador mitiga jmp [rax] agregando instrucciones para cargar el destino de forma no destructiva antes de insertar un LFENCE, como se muestra aquí:

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

Dado que /Qspectre-load detiene la especulación de todas las cargas, el rendimiento se ve afectado enormemente. La mitigación no es conveniente siempre. Si hay bloques de código críticos para el rendimiento que no requieren protección, puede deshabilitar estas mitigaciones con __declspec(spectre(nomitigation)). Para obtener más información, consulte __declspec spectre.

La opción /Qspectre-load está desactivada de manera predeterminada y admite todos los niveles de optimización.

La opción /Qspectre-load está disponible en Visual Studio 2019, en la versión 16.5 y posteriores. Esta opción solo está disponible en los compiladores que tienen como destino los procesadores x86 y x64. No está disponible en los compiladores que tienen como destino los procesadores ARM.

Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Generación de código.

  3. Seleccione un nuevo valor para la propiedad Mitigación de Spectre. Seleccione Aceptar para aplicar el cambio.

Para establecer esta opción del compilador mediante programación

Consulte también

/Qspectre
/Qspectre-jmp
/Qspectre-load-cf
/Q (Opciones) (Operaciones de bajo nivel)
Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC