Почему в сборке используется cmp $ 0xffffffffffffffff,% edi? - PullRequest
4 голосов
/ 02 ноября 2011

Пока я изучал ассемблерный код, я увидел сегмент кода ниже.Я немного растерялся.

mov $0x0, %ecx
lea  0x3(%rdi), %eax
cmp $0xffffffffffffffff, %edi    ; ???
cmovle %eax, %rdi

Я пометил строку с помощью ???.Я не понимаю, почему эта строка используется в ассемблерном коде?

сборка: 64-разрядная версия x86

РЕДАКТИРОВАТЬ: У меня нет никакого сравнения в моем коде.По этой причине мне интересно, почему?

Примечание: я не нашел соответствующего названия для этого вопроса.помогите и сообщите мне, если найдете.Итак, я могу изменить

1 Ответ

3 голосов
/ 02 ноября 2011

сравнивает регистр %edi с константой $0xffffffffffffffff, которая фактически является константой -1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...