Hacker News | 📄 原文链接 | 2026-09-14 收录

x86 的未定义指令为什么叫 ud2?那个 2 从哪来

来源:devblogs.microsoft.com — devblogs.microsoft.com · 71 分 · by ibobev

📋 概述

Raymond Chen 解答一个汇编层面的小疑惑:为什么未定义指令叫 ud2 而不是 ud。ud2 是一条架构上合法的指令,保证触发「非法操作码」异常,编译器常把它放在 [[noreturn]] 函数之后,一旦控制流意外落到那里就崩掉,而不是继续执行随机指令——他在排查某个软件挂钩 API 导致的崩溃时就看到了它。文章顺便回顾了历史:早年确实存在过 ud1,后来 Intel 手册把它重新定义为一条真实的 SSE 指令,于是「未定义」的槽位只留下了 2 号,名字也就固定成了 ud2。

🔑 核心要点

💡 金句

它不是「第二条未定义指令」,而是唯一活下来的那一条未定义指令。
← 返回 Hacker News 首页