HeadlinesBriefing favicon HeadlinesBriefing.com

Warum heißt die x86-Instruktion ud2?

Hacker News •
×

Die Instruktion ud2 ist ein architektonisch undefinierter Opcode auf x86, der zuverlässig eine "ungültiger Opcode"-Ausnahme auslöst. Compiler nutzen sie, um "unerreichbaren" Code zu kennzeichnen, was einen Absturz garantiert, falls die Ausführung ihn erreicht. Ursprünglich gab es keine offizielle undefinierte Instruktion, sodass Programmierer auf Byte-Sequenzen wie 0F FF oder 0F B9 zurückgriffen, um die Ausnahme auszulösen. Diese Sequenzen wurden intern als Instruktionen mit zwei ungenutzten Parametern dekodiert. Als Intel Änderungen einführte, die 0F FF brachen, schlug Software fehl, die darauf angewiesen war – ein Beispiel für Hyrums Gesetz. Um eine stabile Lösung zu bieten, schuf Intel offiziell ud2 und benannte die alten Varianten rückwirkend in ud0 und ud1 um. Im Gegensatz zu ihren Vorgängern ist ud2 eine saubere Zweibyte-Instruktion ohne Parameter, die Dekodierungsprobleme vermeidet, die statt einer ungültigen-Opcode-Ausnahme Zugriffsverletzungen verursachen könnten. Dies macht ud2 zur konsistenten, empfohlenen Wahl für das gezielte Auslösen eines Absturzes.

Die Benennung spiegelt die Geschichte wider: 0F FF wurde zu ud0, 0F B9 zu ud1, und die neue offizielle Instruktion erhielt den Namen ud2. Der Hauptvorteil von ud2 ist ihre architektonische Garantie, die vorhersehbares Verhalten unabhängig von der Anwesenheit von Speicherseiten oder Prozessor-Implementierungsdetails sicherstellt.