assembly JNE x86汇编指令行为矛盾[重复]

7z5jn7bk  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(158)
    • 此问题在此处已有答案**:

testl eax against eax?(8个答案)
2天前关闭。
假设以下示例:

test %eax, %eax
jne Label

我知道JNE汇编指令和JNZ指令做同样的事情。如果零标志ZF等于0,它就跳转。但是,如果我们现在假设% eax的值为1,那么在第一行之后零标志将为0,并且跳转将被执行,尽管% eax和% eax显然相等。这让我很困惑,因为我们跳转不相等。虽然我们比较的两个寄存器实际上是相等的。2直觉上,这对我来说是没有意义的,因为只有当我们比较的东西不相等时,我们才应该跳转。3我希望有人能澄清为什么JNE这样工作。

ngynwnxp

ngynwnxp1#

test指令不比较操作数。它执行两个操作数的AND运算,并相应地设置标志。
这里,结果是相同的值,零标志反映了该值,所以分支指令jnejnz测试eax是否是0

相关问题