Что такое синтаксис сборки для сравнения, если 2 переменные равны?Сравните две переменные в сборке
Я уже пробовал this
, но это не сработало.
Что такое синтаксис сборки для сравнения, если 2 переменные равны?Сравните две переменные в сборке
Я уже пробовал this
, но это не сработало.
В x86
сборка соответствующая инструкция CMPSD
. В Intel Instruction manual
она описывается как
OpCode байт: А7 --- инструкция: CMPSD --- Кодировка: NP --- 64-битный: Действительный --- 32-битный: Действительный
- Для устаревшего режима сравните dword по адресу DS: (E) SI с dword по адресу ES: (E) DI;
- Для 64-разрядный режим сравнения dword по адресу (R | E) SI с dword по адресу (R | E) DI. Соответственно устанавливаются флаги состояния .
CMPSD
сравнивает два операнда памяти и устанавливает флаги состояния в EFLAGS
соответственно для потребления Jcc/CMOVcc/...
.
Так, для сравнения два типа DWORD/4-байтовые переменные, настройки ESI и EDI, как этот
lea esi, var1 ; ESI = address of var1
lea edi, var2 ; EDI = address of var2
cmpsd ; compare them
Jcc... ; use (E)FLAGS
Для других переменных размеров, как 1,2,4,8 байтов используют CMPS (B, W, D , Q) соответственно.
какой сборка? что вы пробовали? что он производит? –