HeadlinesBriefing favicon HeadlinesBriefing.com

Pourquoi l'instruction x86 indéfinie s'appelle ud2 ?

Hacker News •
×

L'instruction ud2 est un opcode architecturalement indéfini sur x86 qui déclenche de manière fiable une exception "opcode invalide". Les compilateurs l'utilisent pour marquer le code "inatteignable", garantissant un plantage si l'exécution l'atteint. À l'origine, aucune instruction indéfinie officielle n'existait, donc les programmeurs s'appuyaient sur des séquences d'octets comme 0F FF ou 0F B9 pour provoquer l'exception. Ces séquences étaient décodées en interne comme des instructions avec deux paramètres inutilisés. Lorsque Intel a introduit des changements qui ont cassé 0F FF, les logiciels qui en dépendaient ont échoué, illustrant la loi de Hyrum. Pour fournir une solution stable, Intel a officiellement créé ud2, nommant rétroactivement les anciennes variantes ud0 et ud1. Contrairement à ses prédécesseurs, ud2 est une instruction propre de deux octets sans paramètres, évitant les problèmes de décodage qui pourraient causer des violations d'accès au lieu d'exceptions d'opcode invalide. Cela fait de ud2 le choix cohérent et recommandé pour déclencher un plantage intentionnel.

Le nommage reflète l'histoire : 0F FF est devenu ud0, 0F B9 est devenu ud1, et la nouvelle instruction officielle a été nommée ud2. L'avantage clé de ud2 est sa garantie architecturale, assurant un comportement prévisible indépendamment de la présence de pages mémoire ou des détails d'implémentation du processeur.