NASM在组装时将JNZ改为JNE?为什么?

时间:2013-02-11 06:32:00

标签: assembly x86 nasm disassembly

我有一段使用JNZ的代码。当我汇编并链接二进制文件时,我看到我的JNZ替换为JNE。据我所知,两者基本相同。但是为什么NA​​SM会改变它呢?

此外,是否有任何配置选项可以阻止此更改在组装时发生?

2 个答案:

答案 0 :(得分:9)

  

据我所知,两者基本相同

JNEJNZsame opcodes(短暂跳跃0x75和近跳跃0x0f 0x85,因此汇编程序会创建两个机器代码相同

拆卸时,反汇编程序不再知道在源中使用了哪一个,而且必须使用其中一个。

  

此外,是否有任何配置选项可以阻止此更改在组装时发生?

不,因为它不是真正的“替代” - JNEJNZ只是相同操作码的不同助记符。

答案 1 :(得分:1)

JNZJNE具有完全相同的编码(请参阅英特尔®64和IA-32架构软件开发人员手册第2A卷3-419)。无论你在汇编程序中使用哪一个,反汇编程序都会选择一个并在反汇编代码中使用相同的表示法。