x86の未定義命令はなぜ「ud2」なのか、その「2」の由来
Why is the x86 undefined instruction called ud2? Why 2?
x86コンパイラが「到達不能」コードの目印に使うud2は、なぜudではなくud2なのか。元々x86に公式の未定義命令はなく、開発者は0F FFや0F B9といったバイト列で不正オペコード例外を起こしていた。Intelが新プロセッサで挙動を変えたことで、これらの命令に依存するソフトが動かなくなり、Hyrumの法則が露呈。0F FFはud0、0F B9はud1と遡って命名され、推奨されるud2が生まれた。ud2がパラメータを持たない2バイト命令である理由も、デコード時のページ境界問題と関係している。
十分な数のユーザーがいれば、観測可能なあらゆる挙動は誰かに依存される。