|
|
| Посл.отвђт | Сообщен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 |