2010-08-13 5 views
2

Что такое lea 0x4(%esp),%ecx в & t сборка? Что действительно такое 0x4 (% esp)?Сборка в & сомнение

+0

в командовании тег не имеет никакого значения здесь :) – Bush

ответ

3

Это %esp + 0x4.

LEA означает Загрузка эффективных адресов. В этом случае это простое дополнение, как показано выше. Как правило, люди и компиляторы больше не используют его, потому что теперь процессоры поставляются с отличным модулем генерации адресов (иначе называемым AGU), который позволяет использовать всевозможные причудливые арифметики для вычисления адресов из регистров и значений. Короче говоря, что бы вы ни делали с lea, теперь вы можете встроить его в любую другую команду.

+0

Мм, 'lea' инструкции как раз под 10 % от _all_ инструкций, сгенерированных для кода, с которым я сейчас работаю. Верно, что на x86 вы можете встроить любую операцию 'lea' в операцию загрузки или хранения (я довольно сомневаюсь, что, честно говоря), но код по-прежнему заполнен арифметикой указателей, которая необязательно связана с загрузкой или хранением. – zwol

1
lea ecx,[esp+4] 
+2

Я не тот, кто вас ниспровергал, но, эм, вы знаете анекдот о пилоте вертолета и технической поддержке Microsoft? – zwol

+0

Я сейчас. Я решил, что вопрос заключается в расшифровке синтаксиса ** at & t **. –

+0

Теперь мне нужно сделать эту шутку google :) – jyz

1

esp - указатель стека. 0x4 - это смещение. AT & T синтаксис имеет command source, destination, а здесь LEA, который является «Load Effective Address».

Так мы говорим процессор для загрузки адреса «указатель стека + 4» в регистр «ЕКБ»