ASM, x86, Объясните строчку с командой CMP?

Здравствуйте! Скажу сразу - я новичок в этих вопросах. Копался с помощью дизасемблера в программе, и тут мне попалась строчка:
cmp d,[ebp][-4],0FFFFE0BE
Поясните пожалуйста что это все значит: откуда взялось d? ведь cmp просто сравнивает два числа? Почему последний аргумент (по всей логике - это должен быть int32) из 33 байтов: 0 + 32 байта числа?

Предистория: чуть выше этой строчи функция берет локальную переменную (ebp-4, назовем ее v) и вычитает из нее 10000. В большинстве своем v до вычитания имеет значения ~1998. Т.е. 1998 - 10000 = -8002. Но в приведенной выше команде сравнения - v сравнивается с FFFFE0BE .... если инвертировать это число, то получится как раз 1F42(8002). Я так предполагаю это как-то связанно с UNSIGNED?
  • Вопрос задан
  • 2933 просмотра
Решения вопроса 1
@Lol4t0
Скорее всего, имеется ввиду cmp DWORD PTR [Addr], Imm

goo.gl/GSaQic
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
iNikNik
@iNikNik Автор вопроса
UPD. Поигрался с калькулятором ... оказывается FFFFE0BE это и есть -8002 ... тогда все сходится:

v -= 10000;
if(v <= -8002)
    // code

и с этим вопрос закрыт. Буду знать ))))
Но вопросы с форматом команды остаются.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы