我对汇编语言编程非常陌生,我目前正在尝试读取从二进制文件生成的汇编语言。我跑过
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
很好,它本身,在什么情况下我们不会跳转?
我是一般编程的初学者,所以如果有人可以向我解释这一点,我将非常感激。谢谢!