Перевод cmp в сборке

Я новичок в сборке и столкнулся со следующим языком:

cmp 0x2c(%esp),%esi

Это явно пытается сравнить, но я не знаю, что такое 0x2c(%esp). Я использую GDB, поэтому команда для доступа к этому значению будет полезна. Следующая строка показывает, равны ли эти два значения.

2 ответа

Решение

Это синтаксис at&t. Вы можете переключить GDB на синтаксис Intel, используя set disassembly-flavor intel чтобы получить более читаемый код. Вы можете проверить значение, используя, например, x/d $esp+0x2c,

Я не знаком с синтаксисом вашего ассемблера, но я бы понял, что он сравнивает содержимое регистра ESI с содержимым ячейки памяти в (указатель стека + 2C шестнадцатеричный)

Другие вопросы по тегам