F0 0F C7 C8 es una secuencia de bytes que forman una instrucción de máquina no válida para los procesadores de la familia x86 . En los procesadores Pentium MMX y Pentium OverDrive , debido a una falla de hardware, un comando, que se ejecutaba en cualquier nivel de privilegio, provocaba un bloqueo total del procesador, lo que afectaba negativamente la confiabilidad del sistema en su conjunto.
La instrucción es un comando:
lock cmpxchg8b eax
El operando puede ser cualquier registro que no sea eax. cmpxchg8b se usa para comparar el contenido de un par de registros eax y edx con 8 bytes del contenido de algún área de memoria. Esto intenta poner un resultado de 8 bytes en un registro de 4 bytes.
Por sí mismo, este comando simplemente genera una excepción ; sin embargo, cuando se combina con el prefijo de bloqueo (se usa para evitar que dos procesadores accedan a la misma área de memoria al mismo tiempo), no se llama al controlador de excepciones, el procesador deja de procesar las interrupciones. y es necesario reiniciar para que funcione.
Esta instrucción no requiere ningún privilegio especial , y debido a la alta prevalencia de los procesadores Intel , el problema era grave. Aunque no causó ningún daño permanente al hardware, también podría causar la pérdida de datos en los casos en que se produjera una falla del procesador durante una operación de escritura en disco con un búfer sin vaciar, una interrupción u otra operación no atómica.