x86 的 ud2 指令为何叫 ud2?

Why is the x86 undefined instruction called ud2? Why 2?

在查看 x86 编译器输出或调试 API 重定向导致的崩溃时,你常会看到 ud2 指令。这是一条架构上未定义的指令,用于触发“无效操作码”异常,防止程序执行随机代码。但为什么它叫 ud2 而不是 ud?难道存在 ud1?事实上,早期开发者曾利用 0F FF 和 0F B9 等字节序列来触发异常,分别被 retroactively 命名为 ud0 和 ud1。后来 Intel 发现这些序列的行为不可靠,受 Hyrum's Law 影响,最终正式定义了 ud2 作为标准的未定义指令。ud2 的优势在于它是一条无参数的双字节指令,行为一致且架构保证,避免了因解码问题引发的访问违规。

只要有足够多的用户,所有可观察的行为都会被某人依赖。

同日更多故事

2026-09-13