Intel x86手册中JA/JNBE跳转条件是否存在错误?
关于Intel SDM条件跳转指令文档错误的说明
没错,Intel官方手册确实偶尔会在核心指令的文档细节上出现笔误——哪怕是JCC这类最基础的条件跳转指令也不例外。
你提到的JA/JNBE指令就是一个典型的例子:你手上的合订卷里表7-4标注的跳转条件(CF or ZF) = 0是明显的逻辑错误,正确的条件应该是CF = 0 and ZF = 0。你的验证(测试代码+第三方资料+2018年5月版vol.2手册的JCC条目)完全正确,这个结论没问题。
至于你怀疑的JL/JNGE指令,它的正确跳转逻辑是符号标志位(SF)不等于溢出标志位(OF),如果合订卷里的描述和这个不符,那基本可以确定也是文档校对时的疏忽。
这类错误的出现其实不难理解:Intel SDM是一套内容极其庞大的文档,涵盖了x86/Intel 64架构的所有技术细节,从指令集到内存模型再到虚拟化支持,页数动辄数千页,排版和校对过程中难免会出现零星的疏漏。
遇到这类文档矛盾时,最可靠的验证方式就是你已经做的这几点:
- 对比不同版本的官方手册(比如单卷更新版 vs 合订卷)
- 参考可信的第三方技术资料
- 编写实际的测试代码,观察指令的真实执行行为
另外,Intel会在后续的手册版本中逐步修正这类错误,如果你发现了明确的文档问题,也可以通过Intel官方的技术反馈渠道提交,帮助完善这份行业核心参考文档。
内容的提问来源于stack exchange,提问作者Maverick
相关产品推荐
相关产品推荐

