Как интерпретировать эту сборку? - PullRequest
0 голосов
/ 28 марта 2011
lea    (%edx,%eax,1),%eax

Кто-нибудь знает, как использовать (%edx,%eax,1)?

Ответы [ 3 ]

1 голос
/ 28 марта 2011

(%edx,%eax,1) - это адрес операнда, соответствующий edx + eax * 1

Другими словами, инструкция lea, это просто оператор добавления, эквивалентный eax += edx

0 голосов
/ 10 марта 2016

Инструкция lea (Load Effective Address) используется для вычисления адреса таким же образом, как косвенная адресация, и для сохранения полученного адреса вместо чтения того, что находится в адресе. В случае синтаксиса AT & T (% edx,% eax, 1) означает (% edx +% eax * 1). В этом случае это, как сказал Лоран G, эквивалент add% edx,% eax. Однако, используя другие факторы (смещение перед круглой скобкой и число, отличное от 1), вы можете сделать немного более сложную математику.

Этот тип адресации обычно используется для обработки массивов, но инструкция lea не проверяет правильность результирующего адреса, поэтому вы можете использовать это как способ короткого замыкания для вычисления, которое будет принимать несколько инструкций.

0 голосов
/ 28 марта 2011

Взгляните на синтаксис операнда адреса GAS , похоже, это то, что вы ищете.

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