You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带NP标识与无NP标识x86指令的66/F2/F3前缀使用规则差异问询

两类指令66/F2/F3前缀使用规则核心差异

首先明确英特尔架构手册卷2对NP标识的官方定义:

NP用于标识指令禁止使用不属于自身操作码组成部分的66/F2/F3前缀,违规使用要么会触发无效操作码异常#UD,要么会被编码为其他指令。

第一类:标注NP标识的指令(示例:ADDPS、ANDPS、ANDNPS、BNDLDX、BNDSTX等)

  • 前缀使用有绝对硬性约束:所有不属于该指令原生操作码组成部分的66/F2/F3前缀,完全禁止附加
  • 违规后果:只要添加了非原生的上述三类前缀,要么直接触发#UD无效操作码异常,要么CPU会将整段编码识别为另一条完全不同的指令,不会执行你预期的NP标注指令
  • 补充说明:如果某条NP指令的操作码本身就原生包含66/F2/F3中的某一个(比如部分SSE变种指令的操作码默认带F2/F3前缀),仅这个原生前缀是合法的,剩余两类非原生前缀依然不允许添加

第二类:无NP标识、且原生编码不含66/F2/F3前缀的指令(示例:ADD、AAD、AAM、AAS、ADC等)

  • 前缀使用约束宽松:66/F2/F3前缀只要符合架构定义的合法使用场景,就可以正常附加,不会被判定为非法
  • 常见合法使用场景举例:
    • 给工作在32位模式下的ADD指令添加66前缀,可以切换操作数大小为16位
    • 给字符串操作类指令添加F3前缀,可以实现REP重复执行效果
  • 违规后果:只要前缀使用符合架构规范,就会正常执行预期的指令功能,不会触发#UD异常,也不会被识别为其他指令

内容的提问来源于stack exchange,提问作者Belloc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:24:04