< p > 可能的重复: < br > x86汇编- ' testl ' eax对eax? < / p >
我对汇编语言编程非常非常陌生,我目前正在尝试阅读由二进制文件生成的汇编语言。我遇到过
test %eax,%eax
或test %rdi, %rdi
,等等。我很困惑这是做什么的。%eax, %eax
中的值不是相同的吗?它在测试什么?我在某处读到,它正在做AND
操作.....但由于它们是相同的值,它不会只是返回%eax
吗?
以下是我发现这种用法的一个例子:
400e6e: 85 c0 test %eax,%eax
400e70: 74 05 je 400e77 <phase_1+0x23>
我认为je
跳转,如果正在比较的两个值相等......因为%eax
是well,本身,在什么情况下我们不会跳转?
一般来说,我是一个编程初学者,所以如果有人能给我解释一下,我会非常感激。谢谢!