Raymond Chen 回答一个看似挑刺的问题:ud2 就是一条两字节的“架构上未定义”指令,而 int 6 也只有两字节、6 号中断向量正是无效指令,为什么还要专门造 ud2?答案是故障与陷阱的语义差别:无效指令是 fault,处理器报告的返回地址指向出错的那条指令;int 6 是 trap,返回地址指向它的下一条。用 int 6 假冒 #UD,处理器会拿着一条合法指令的地址去解释为什么触发了无效指令。再加上保护模式下用户态本就无权执行 int 6,操作系统一律禁止,假冒这条路彻底堵死。