HeadlinesBriefing favicon HeadlinesBriefing.com

Por que a instrução x86 indefinida se chama ud2?

Hacker News •
×

A instrução ud2 é um opcode arquitetonicamente indefinido no x86 que gera de forma confiável uma exceção de "opcode inválido". Compiladores a usam para marcar código "inalcançável", garantindo uma falha se a execução o alcançar. Originalmente, não existia uma instrução indefinida oficial, então programadores recorriam a sequências de bytes como 0F FF ou 0F B9 para disparar a exceção. Essas sequências eram decodificadas internamente como instruções com dois parâmetros não utilizados. Quando a Intel introduziu mudanças que quebraram 0F FF, o software que dependia dele falhou, ilustrando a Lei de Hyrum. Para fornecer uma solução estável, a Intel criou oficialmente o ud2, nomeando retroativamente as variantes antigas como ud0 e ud1. Diferente de suas predecessoras, o ud2 é uma instrução limpa de dois bytes sem parâmetros, evitando problemas de decodificação que poderiam causar violações de acesso em vez de exceções de opcode inválido. Isso torna o ud2 a escolha consistente e recomendada para disparar uma falha intencional.

A nomenclatura reflete a história: 0F FF tornou-se ud0, 0F B9 tornou-se ud1, e a nova instrução oficial foi nomeada ud2. A principal vantagem do ud2 é sua garantia arquitetural, assegurando comportamento previsível independentemente da presença de páginas de memória ou detalhes de implementação do processador.