· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› команда lea

Посл.отвђт Сообщенiе


Дата: Авг 9, 2004 13:50:12

никак не могу понять команду lea

например есть(из Юрова):
.data
mas  db   10 dup (0)

.code
mov  di, 4
lea  bx, mas[di]


после компиляции mas - это смещение относительно начала сегмента и весь вышеприведённый код можно представить:
mov  bx, mas
add  bx, di


Вообще я прочитал что lea - загрузка эффективного адреса
объекта в памяти. Так а объект в памяти чем задаётся,
не смещением ли? Вывод lea - это псевдокоманда, обрабатывающаяся на этапе кимпиляции.

короче запутался совсем, помогите пожалуйста


Дата: Авг 9, 2004 14:23:26 · Поправил: Sem

Нет, lea - не псевдокоманда, её код - 8Dh. Какой-такой линкер делает вышепреведенный код?


Дата: Авг 9, 2004 14:23:53

Правильно Load Effective Address. Допустим есть локальная переменная i при исполнении программы для этих переменных (masm) отводится дырка в стеке (пролог функции).
push ebp
mov ebp, esp
add esp, -04 ; Дыра размером DWORD

естественно значение стека не знаем, если надо загрузить адрес переменной i
lea eax, i

Компилятор превратит в код
lea    eax,[ebp-04]

Что означает загрузить в eax адрес переменной i, которая находится по адресу ebp-4
lea - не для компилятора - это команда процессора.


Дата: Авг 9, 2004 14:39:41 · Поправил: letopisec

Sem

Какой-такой линкер делает вышепреведенный код код

нет я, про то что вроде бы можно представить,
а не про конкретный линкер

ChS

загрузить в eax адрес переменной i, которая находится по адресу ebp-4
именно это мне и не понятно.
"Адрес переменной - по адресу".

Т.е. eax = ebp-4

Можно поподробней, что-то не доходит

и ещё не дошло где в первой части примера i, как
оно связано с ebp, esp

Спасибо


Дата: Авг 9, 2004 15:07:32

> Т.е. eax = ebp-4
Именно так процессор и поступает.
Проще взять отладчик н-р OllyDbg и по шагам трассировать програмку, там все увидишь :)
Если совсем не дойдет:
[url=]
http://www.kalashnikoff.ru/index.html
[/url]
По вопросу примера разберешся чуть позже, когда освоишь передачу параметров через стэк.


Дата: Авг 9, 2004 15:12:05

Спасибо


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.096