Вы можете сравнить два значения в памяти с помощью инструкции CMPSD.
Op хочет сделать что-то эквивалентно:
cmpl -4(%ebp), 4(%ebp)
Он может сделать это путем размещения адреса ячеек памяти, представляющих интерес в ESI и EDI соответственно, а затем с помощью CMPSD memory-to-memory string-compare instruction:
lea -4(%ebp), %esi
lea 4(%ebp), %edi
cmpsd
(простите мое неопытное злоупотребление AT & T синтаксис).
Это не так, как это было бы на практике. Другие ответы, представленные здесь (загрузка значения в регистр и сравнение), гораздо более практичны. Если ничего другого, эти решения записывают только один регистр, и этот хак сжигает два.
Занятие: в ассемблере существует почти всегда один способ кожи кошки.
В x86 невозможно использовать два операнда памяти с простыми инструкциями типа «CMP». Поэтому скопируйте/'MOV' одно из значений памяти в' EAX', а затем сравните другое с 'EAX'. – zx485
Первые несколько хитов google для '' слишком много ссылок на память для «' все имеют ответы. например http://stackoverflow.com/questions/2531682/gas-too-many-memory-reference. Большинство из них касаются mov, а не cmp, но MOVS и CMPS существуют. Ответ Иры дает хорошее представление о том, что CMP отличается от желания добавить, например, так как вы можете сделать это по-другому. –