- 此问题在此处已有答案**:
testl
eax against eax?(8个答案)
2天前关闭。
假设以下示例:
test %eax, %eax
jne Label
我知道JNE汇编指令和JNZ指令做同样的事情。如果零标志ZF等于0,它就跳转。但是,如果我们现在假设% eax的值为1,那么在第一行之后零标志将为0,并且跳转将被执行,尽管% eax和% eax显然相等。这让我很困惑,因为我们跳转不相等。虽然我们比较的两个寄存器实际上是相等的。2直觉上,这对我来说是没有意义的,因为只有当我们比较的东西不相等时,我们才应该跳转。3我希望有人能澄清为什么JNE这样工作。
1条答案
按热度按时间ngynwnxp1#
test
指令不比较操作数。它执行两个操作数的AND
运算,并相应地设置标志。这里,结果是相同的值,零标志反映了该值,所以分支指令
jne
或jnz
测试eax
是否是0
。