Возможный дубликат:
x86 Assembly - 'testl eax против eax?
Я очень новичок в программировании на ассемблере, и сейчас я пытаюсь прочитать язык ассемблера, созданный из двоичного файла. Я столкнулся с
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
хорошо, сам, в какой ситуации мы бы не прыгали?
Я новичок в программировании в целом, поэтому я был бы очень признателен, если бы кто-нибудь мог мне это объяснить. Спасибо!