Raymond Chen, veterano bloguero de Microsoft, reconstruye en el blog The Old New Thing la historia de la instrucción x86 ud2. Ud2 es un opcode indefinido a nivel de arquitectura que siempre provoca una excepción de opcode inválido. Los compiladores lo insertan tras código que se supone inalcanzable, por ejemplo después de llamar a una función marcada como [[noreturn]] que, contra lo esperado, regresa.

Antes de que existiera ud2, los desarrolladores buscaban una forma fiable de forzar esa excepción. Un grupo usaba la secuencia de bytes 0F FF, otro la secuencia 0F B9; ambas se decodificaban internamente como si tomaran un registro de destino y una fuente de registro o memoria, que nunca llegaban a usarse. Cuando Intel modificó procesadores posteriores y esas dos secuencias dejaron de disparar la excepción de forma confiable, algunos programas existentes empezaron a fallar, un ejemplo clásico de la ley de Hyrum: con suficientes usuarios, cualquier comportamiento observable acaba siendo una dependencia para alguien.

La solución de Intel fue estandarizar una instrucción realmente inválida de forma permanente, ud2, un opcode de dos bytes sin operandos. En retrospectiva, 0F FF fue renombrado como ud0 y 0F B9 pasó a llamarse ud1, dejando a ud2 como la opción oficial recomendada.

Chen señala una desventaja técnica de ud0 y ud1: como sus bytes de operandos no usados igualmente se decodifican, toparse con una de estas secuencias al final de una página de memoria puede provocar una violación de acceso en lugar de una excepción de opcode inválido si la siguiente página no está presente. Algunos procesadores más antiguos lanzaban la excepción de opcode inválido apenas decodificaban 0F FF, sin completar la decodificación, lo que generaba comportamiento inconsistente según los límites de página. Ud2 evita este problema porque es autocontenido y su comportamiento está garantizado por la arquitectura.